{
  "contractName": "PairStCelo",
  "abi": [
    {
      "stateMutability": "payable",
      "type": "receive"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "input",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "output",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "input",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "getOutputAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getOutputAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"output\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/swappa/PairStCelo.sol\":\"PairStCelo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x91e0bd6a6762d2a1700dab0849de8422611355100576c4beef1e80d82a4104a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73bbd77af0a8b07255d2ffa20728bcf13b116007c9ddac5d37046cfabb0e1e02\",\"dweb:/ipfs/QmRgZgWCWCSMTTaok6o4QvWA6MgB4goS8qpb3sN7bAvaZ9\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"project:/contracts/interfaces/stCelo/IManager.sol\":{\"keccak256\":\"0xe4e3a233db7e42b789372f5ecd89825cbb18987043642df985b8747e01c197a9\",\"urls\":[\"bzz-raw://dccc6ffda82fafa37fea430c770869fcc1adc88857f76a2f3d8eaf687f394552\",\"dweb:/ipfs/QmYaVNnxUnAgJ4u4VwNtw87wdhKHVdhRepMBy9RUj1pF8V\"]},\"project:/contracts/swappa/ISwappaPairV1.sol\":{\"keccak256\":\"0x3ad68981bda91ed83c5e9ee8617f08bb5e208208477fb755cc77077f127010ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e4390b1bebc39f58bff34b9099a646ead67cef27b722ef61548487251cca719\",\"dweb:/ipfs/QmRWEuYyjHaS957VKWtTfDpzfqkXb2bvEsS33meAC76ZuU\"]},\"project:/contracts/swappa/PairStCelo.sol\":{\"keccak256\":\"0xc35d68f6d63847fefc4d6b4b3f4e7891910ae84d08084539d7b652d1d003618f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fde2f0afc4f595677cdefc5d1b1d7ebe534a2e68eae6b550e3c16ac0506fab7\",\"dweb:/ipfs/QmQavZVhGm33ykW9uzpxHf3eGjQuSvKhbLcg8hE82TU68u\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610710806100206000396000f3fe60806040526004361061002d5760003560e01c806332ef8314146100395780637eace892146100e657610034565b3661003457005b600080fd5b34801561004557600080fd5b506100e46004803603608081101561005c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100a557600080fd5b8201836020820111156100b757600080fd5b803590602001918460018302840111640100000000831117156100d957600080fd5b5090925090506101a2565b005b3480156100f257600080fd5b506101906004803603608081101561010957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561015157600080fd5b82018360208201111561016357600080fd5b8035906020019184600183028401116401000000008311171561018557600080fd5b509092509050610556565b60408051918252519081900360200190f35b73ffffffffffffffffffffffffffffffffffffffff851673471ece3750da237f93b8e339c536989b8978a4381461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616972537443656c6f3a20496e636f727265637420496e7075740000000000604482015290519081900360640190fd5b600061027b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066092505050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d602081101561031757600080fd5b5051604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff84169163d0e30db0918491600480830192600092919082900301818588803b15801561038557600080fd5b505af1158015610399573d6000803e3d6000fd5b5050604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000945073ffffffffffffffffffffffffffffffffffffffff8b1693506370a0823192506024808301926020929190829003018186803b15801561040d57600080fd5b505afa158015610421573d6000803e3d6000fd5b505050506040513d602081101561043757600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820184905291519293509089169163a9059cbb916044808201926020929091908290030181600087803b1580156104b557600080fd5b505af11580156104c9573d6000803e3d6000fd5b505050506040513d60208110156104df57600080fd5b505161054c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616972537443656c6f3a205472616e73666572204661696c65640000000000604482015290519081900360640190fd5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff861673471ece3750da237f93b8e339c536989b8978a43814156106535760006105cb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066092505050565b90508073ffffffffffffffffffffffffffffffffffffffff1663c494ec1e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b505191506106579050565b5060005b95945050505050565b600081516014146106d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f50616972537443656c6f3a20696e76616c696420646174612100000000000000604482015290519081900360640190fd5b50601401519056fea2646970667358221220ffee28831164a874e0061c11c723984fd1d9b6392da2285e01f6cd01cdbb35cb64736f6c63430006080033",
  "deployedBytecode": "0x60806040526004361061002d5760003560e01c806332ef8314146100395780637eace892146100e657610034565b3661003457005b600080fd5b34801561004557600080fd5b506100e46004803603608081101561005c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100a557600080fd5b8201836020820111156100b757600080fd5b803590602001918460018302840111640100000000831117156100d957600080fd5b5090925090506101a2565b005b3480156100f257600080fd5b506101906004803603608081101561010957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561015157600080fd5b82018360208201111561016357600080fd5b8035906020019184600183028401116401000000008311171561018557600080fd5b509092509050610556565b60408051918252519081900360200190f35b73ffffffffffffffffffffffffffffffffffffffff851673471ece3750da237f93b8e339c536989b8978a4381461023a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616972537443656c6f3a20496e636f727265637420496e7075740000000000604482015290519081900360640190fd5b600061027b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066092505050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b1580156102ed57600080fd5b505afa158015610301573d6000803e3d6000fd5b505050506040513d602081101561031757600080fd5b5051604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff84169163d0e30db0918491600480830192600092919082900301818588803b15801561038557600080fd5b505af1158015610399573d6000803e3d6000fd5b5050604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000945073ffffffffffffffffffffffffffffffffffffffff8b1693506370a0823192506024808301926020929190829003018186803b15801561040d57600080fd5b505afa158015610421573d6000803e3d6000fd5b505050506040513d602081101561043757600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820184905291519293509089169163a9059cbb916044808201926020929091908290030181600087803b1580156104b557600080fd5b505af11580156104c9573d6000803e3d6000fd5b505050506040513d60208110156104df57600080fd5b505161054c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616972537443656c6f3a205472616e73666572204661696c65640000000000604482015290519081900360640190fd5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff861673471ece3750da237f93b8e339c536989b8978a43814156106535760006105cb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066092505050565b90508073ffffffffffffffffffffffffffffffffffffffff1663c494ec1e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b505191506106579050565b5060005b95945050505050565b600081516014146106d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f50616972537443656c6f3a20696e76616c696420646174612100000000000000604482015290519081900360640190fd5b50601401519056fea2646970667358221220ffee28831164a874e0061c11c723984fd1d9b6392da2285e01f6cd01cdbb35cb64736f6c63430006080033",
  "immutableReferences": {},
  "sourceMap": "239:1187:54:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;239:1187:54;;;;;;;",
  "deployedSourceMap": "239:1187:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;384:486:54;;5:9:-1;2:2;;;27:1;24;17:12;2:2;384:486:54;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;384:486:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;384:486:54;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;384:486:54;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;384:486:54;;-1:-1:-1;384:486:54;-1:-1:-1;384:486:54;:::i;:::-;;1084:308;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1084:308:54;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1084:308:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1084:308:54;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1084:308:54;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1084:308:54;;-1:-1:-1;1084:308:54;-1:-1:-1;1084:308:54;:::i;:::-;;;;;;;;;;;;;;;;384:486;503:21;;;338:42;503:21;495:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:27;590:15;600:4;;590:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;590:9:54;;-1:-1:-1;;;590:15:54:i;:::-;628:37;;;;;;659:4;628:37;;;;;;560:45;;-1:-1:-1;609:16:54;;628:22;;;;;;:37;;;;;;;;;;;;;;:22;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;628:37:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;628:37:54;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;628:37:54;669:51;;;;;;;;628:37;;-1:-1:-1;669:29:54;;;;;;628:37;;669:51;;;;;;;;;;;;;;628:37;669:29;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;669:51:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;744:38:54;;;;;;776:4;744:38;;;;;;724:17;;-1:-1:-1;744:23:54;;;;-1:-1:-1;744:23:54;;-1:-1:-1;744:38:54;;;;;;;;;;;;;;:23;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;744:38:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;744:38:54;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;744:38:54;794:40;;;;;;:22;:40;;;;;;;;;;;;;;;744:38;;-1:-1:-1;794:22:54;;;;;;:40;;;;;744:38;;794:40;;;;;;;;-1:-1:-1;794:22:54;:40;;;2:2:-1;;;;27:1;24;17:12;2:2;794:40:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;794:40:54;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;794:40:54;786:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;384:486;;;;;;;;:::o;1084:308::-;1207:14;1231:21;;;338:42;1231:21;1227:162;;;1259:27;1289:15;1299:4;;1289:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1289:9:54;;-1:-1:-1;;;1289:15:54:i;:::-;1259:45;;1325:11;1316:34;;;1351:8;1316:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1316:44:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1316:44:54;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1316:44:54;;-1:-1:-1;1309:51:54;;-1:-1:-1;1309:51:54;1227:162;-1:-1:-1;1383:1:54;1227:162;1084:308;;;;;;;:::o;873:208::-;933:27;974:4;:11;989:2;974:17;966:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1070:2:54;1060:13;1054:20;;1034:44::o",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.8;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"../interfaces/stCelo/IManager.sol\";\nimport \"./ISwappaPairV1.sol\";\n\ncontract PairStCelo is ISwappaPairV1 {\n\tusing SafeMath for uint;\n\n\taddress constant CELO_ADDRESS = 0x471EcE3750Da237f93B8E339c536989b8978a438;\n\n\tfunction swap(\n\t\taddress input,\n\t\taddress output,\n\t\taddress to,\n\t\tbytes calldata data\n\t) external override {\n\t\trequire(input == CELO_ADDRESS, \"PairStCelo: Incorrect Input\");\n\t\taddress payable managerAddr = parseData(data);\n\t\tuint inputAmount = ERC20(input).balanceOf(address(this));\n\t\tIManager(managerAddr).deposit{value: inputAmount}();\n\t\tuint outputAmount = ERC20(output).balanceOf(address(this));\n\t\trequire(ERC20(output).transfer(to, outputAmount), \"PairStCelo: Transfer Failed\");\n\t}\n\n\tfunction parseData(bytes memory data) private pure returns (address payable managerAddr) {\n\t\trequire(data.length == 20, \"PairStCelo: invalid data!\");\n\t\tassembly {\n\t\t\tmanagerAddr := mload(add(data, 20))\n\t\t}\n\t}\n\n\tfunction getOutputAmount(\n\t\taddress input,\n\t\taddress,\n\t\tuint amountIn,\n\t\tbytes calldata data\n\t) external override returns (uint amountOut) {\n\t\tif (input == CELO_ADDRESS) {\n\t\t\taddress payable managerAddr = parseData(data);\n\t\t\treturn IManager(managerAddr).toStakedCelo(amountIn);\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\treceive() external payable {}\n}",
  "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/swappa/PairStCelo.sol",
  "ast": {
    "absolutePath": "project:/contracts/swappa/PairStCelo.sol",
    "exportedSymbols": {
      "PairStCelo": [
        6729
      ]
    },
    "id": 6730,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6590,
        "literals": [
          "solidity",
          "0.6",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:22:54"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 6591,
        "nodeType": "ImportDirective",
        "scope": 6730,
        "sourceUnit": 219,
        "src": "56:51:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
        "id": 6592,
        "nodeType": "ImportDirective",
        "scope": 6730,
        "sourceUnit": 726,
        "src": "108:55:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/stCelo/IManager.sol",
        "file": "../interfaces/stCelo/IManager.sol",
        "id": 6593,
        "nodeType": "ImportDirective",
        "scope": 6730,
        "sourceUnit": 1739,
        "src": "164:43:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
        "file": "./ISwappaPairV1.sol",
        "id": 6594,
        "nodeType": "ImportDirective",
        "scope": 6730,
        "sourceUnit": 5326,
        "src": "208:29:54",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6595,
              "name": "ISwappaPairV1",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5325,
              "src": "262:13:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISwappaPairV1_$5325",
                "typeString": "contract ISwappaPairV1"
              }
            },
            "id": 6596,
            "nodeType": "InheritanceSpecifier",
            "src": "262:13:54"
          }
        ],
        "contractDependencies": [
          5325
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6729,
        "linearizedBaseContracts": [
          6729,
          5325
        ],
        "name": "PairStCelo",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6599,
            "libraryName": {
              "contractScope": null,
              "id": 6597,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 218,
              "src": "285:8:54",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$218",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "279:24:54",
            "typeName": {
              "id": 6598,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "298:4:54",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 6602,
            "mutability": "constant",
            "name": "CELO_ADDRESS",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 6729,
            "src": "306:74:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 6600,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "306:7:54",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307834373145634533373530446132333766393342384533333963353336393839623839373861343338",
              "id": 6601,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "338:42:54",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              },
              "value": "0x471EcE3750Da237f93B8E339c536989b8978a438"
            },
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              5311
            ],
            "body": {
              "id": 6670,
              "nodeType": "Block",
              "src": "491:379:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6615,
                          "name": "input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6604,
                          "src": "503:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6616,
                          "name": "CELO_ADDRESS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6602,
                          "src": "512:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "503:21:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50616972537443656c6f3a20496e636f727265637420496e707574",
                        "id": 6618,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "526:29:54",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c2b28497ed3c7e61730b4c5638f499a71a822ad08d969c690192fde8bd5e0cde",
                          "typeString": "literal_string \"PairStCelo: Incorrect Input\""
                        },
                        "value": "PairStCelo: Incorrect Input"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c2b28497ed3c7e61730b4c5638f499a71a822ad08d969c690192fde8bd5e0cde",
                          "typeString": "literal_string \"PairStCelo: Incorrect Input\""
                        }
                      ],
                      "id": 6614,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "495:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "495:61:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6620,
                  "nodeType": "ExpressionStatement",
                  "src": "495:61:54"
                },
                {
                  "assignments": [
                    6622
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6622,
                      "mutability": "mutable",
                      "name": "managerAddr",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6670,
                      "src": "560:27:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 6621,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "560:15:54",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6626,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6624,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6610,
                        "src": "600:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 6623,
                      "name": "parseData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6688,
                      "src": "590:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_payable_$",
                        "typeString": "function (bytes memory) pure returns (address payable)"
                      }
                    },
                    "id": 6625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "590:15:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "560:45:54"
                },
                {
                  "assignments": [
                    6628
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6628,
                      "mutability": "mutable",
                      "name": "inputAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6670,
                      "src": "609:16:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6627,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "609:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6638,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6635,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "659:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PairStCelo_$6729",
                              "typeString": "contract PairStCelo"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PairStCelo_$6729",
                              "typeString": "contract PairStCelo"
                            }
                          ],
                          "id": 6634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "651:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6633,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "651:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "651:13:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6630,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6604,
                            "src": "634:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6629,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 725,
                          "src": "628:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 6631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "628:12:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$725",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 6632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 325,
                      "src": "628:22:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "628:37:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "609:56:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6640,
                              "name": "managerAddr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6622,
                              "src": "678:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 6639,
                            "name": "IManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1738,
                            "src": "669:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IManager_$1738_$",
                              "typeString": "type(contract IManager)"
                            }
                          },
                          "id": 6641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "669:21:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IManager_$1738",
                            "typeString": "contract IManager"
                          }
                        },
                        "id": 6642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "deposit",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1723,
                        "src": "669:29:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$__$returns$__$",
                          "typeString": "function () payable external"
                        }
                      },
                      "id": 6644,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "argumentTypes": null,
                          "id": 6643,
                          "name": "inputAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6628,
                          "src": "706:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "669:49:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                        "typeString": "function () payable external"
                      }
                    },
                    "id": 6645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "669:51:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6646,
                  "nodeType": "ExpressionStatement",
                  "src": "669:51:54"
                },
                {
                  "assignments": [
                    6648
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6648,
                      "mutability": "mutable",
                      "name": "outputAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6670,
                      "src": "724:17:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6647,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "724:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6658,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6655,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "776:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PairStCelo_$6729",
                              "typeString": "contract PairStCelo"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PairStCelo_$6729",
                              "typeString": "contract PairStCelo"
                            }
                          ],
                          "id": 6654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "768:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 6653,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "768:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "768:13:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6650,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6606,
                            "src": "750:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6649,
                          "name": "ERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 725,
                          "src": "744:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                            "typeString": "type(contract ERC20)"
                          }
                        },
                        "id": 6651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "744:13:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$725",
                          "typeString": "contract ERC20"
                        }
                      },
                      "id": 6652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 325,
                      "src": "744:23:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "744:38:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "724:58:54"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6664,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6608,
                            "src": "817:2:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6665,
                            "name": "outputAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6648,
                            "src": "821:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6661,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6606,
                                "src": "800:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6660,
                              "name": "ERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 725,
                              "src": "794:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                "typeString": "type(contract ERC20)"
                              }
                            },
                            "id": 6662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "794:13:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$725",
                              "typeString": "contract ERC20"
                            }
                          },
                          "id": 6663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 346,
                          "src": "794:22:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 6666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "794:40:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50616972537443656c6f3a205472616e73666572204661696c6564",
                        "id": 6667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "836:29:54",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_72102a2f448a4f40b1d3c08013419a120ffb1802794c739e30874dd238d57a8b",
                          "typeString": "literal_string \"PairStCelo: Transfer Failed\""
                        },
                        "value": "PairStCelo: Transfer Failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_72102a2f448a4f40b1d3c08013419a120ffb1802794c739e30874dd238d57a8b",
                          "typeString": "literal_string \"PairStCelo: Transfer Failed\""
                        }
                      ],
                      "id": 6659,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "786:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "786:80:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6669,
                  "nodeType": "ExpressionStatement",
                  "src": "786:80:54"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "32ef8314",
            "id": 6671,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "swap",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6612,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "482:8:54"
            },
            "parameters": {
              "id": 6611,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6604,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6671,
                  "src": "401:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6603,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "401:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6606,
                  "mutability": "mutable",
                  "name": "output",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6671,
                  "src": "418:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6605,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "418:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6608,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6671,
                  "src": "436:10:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6607,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "436:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6610,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6671,
                  "src": "450:19:54",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6609,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "397:75:54"
            },
            "returnParameters": {
              "id": 6613,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "491:0:54"
            },
            "scope": 6729,
            "src": "384:486:54",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6687,
              "nodeType": "Block",
              "src": "962:119:54",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6679,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6673,
                            "src": "974:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 6680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "974:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3230",
                          "id": 6681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "989:2:54",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_20_by_1",
                            "typeString": "int_const 20"
                          },
                          "value": "20"
                        },
                        "src": "974:17:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50616972537443656c6f3a20696e76616c6964206461746121",
                        "id": 6683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "993:27:54",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_62d701754d3a9f647524e2d17328608023eb7685e7097e53454c7a2b2342c35f",
                          "typeString": "literal_string \"PairStCelo: invalid data!\""
                        },
                        "value": "PairStCelo: invalid data!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_62d701754d3a9f647524e2d17328608023eb7685e7097e53454c7a2b2342c35f",
                          "typeString": "literal_string \"PairStCelo: invalid data!\""
                        }
                      ],
                      "id": 6678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "966:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "966:55:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6685,
                  "nodeType": "ExpressionStatement",
                  "src": "966:55:54"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1034:44:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1039:35:54",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:4:54"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1070:2:54",
                                  "type": "",
                                  "value": "20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1060:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1060:13:54"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1054:5:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1054:20:54"
                        },
                        "variableNames": [
                          {
                            "name": "managerAddr",
                            "nodeType": "YulIdentifier",
                            "src": "1039:11:54"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 6673,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1064:4:54",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6676,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1039:11:54",
                      "valueSize": 1
                    }
                  ],
                  "id": 6686,
                  "nodeType": "InlineAssembly",
                  "src": "1025:53:54"
                }
              ]
            },
            "documentation": null,
            "id": 6688,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "parseData",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6674,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6673,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6688,
                  "src": "892:17:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6672,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "892:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "891:19:54"
            },
            "returnParameters": {
              "id": 6677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6676,
                  "mutability": "mutable",
                  "name": "managerAddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6688,
                  "src": "933:27:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 6675,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "933:15:54",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "932:29:54"
            },
            "scope": 6729,
            "src": "873:208:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "baseFunctions": [
              5324
            ],
            "body": {
              "id": 6723,
              "nodeType": "Block",
              "src": "1223:169:54",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 6704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6702,
                      "name": "input",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6690,
                      "src": "1231:5:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 6703,
                      "name": "CELO_ADDRESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6602,
                      "src": "1240:12:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1231:21:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 6721,
                    "nodeType": "Block",
                    "src": "1371:18:54",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1383:1:54",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 6701,
                        "id": 6720,
                        "nodeType": "Return",
                        "src": "1376:8:54"
                      }
                    ]
                  },
                  "id": 6722,
                  "nodeType": "IfStatement",
                  "src": "1227:162:54",
                  "trueBody": {
                    "id": 6718,
                    "nodeType": "Block",
                    "src": "1254:111:54",
                    "statements": [
                      {
                        "assignments": [
                          6706
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6706,
                            "mutability": "mutable",
                            "name": "managerAddr",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 6718,
                            "src": "1259:27:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 6705,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1259:15:54",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6710,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6708,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6696,
                              "src": "1299:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 6707,
                            "name": "parseData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6688,
                            "src": "1289:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_payable_$",
                              "typeString": "function (bytes memory) pure returns (address payable)"
                            }
                          },
                          "id": 6709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1289:15:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1259:45:54"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6715,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6694,
                              "src": "1351:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6712,
                                  "name": "managerAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6706,
                                  "src": "1325:11:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 6711,
                                "name": "IManager",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1738,
                                "src": "1316:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IManager_$1738_$",
                                  "typeString": "type(contract IManager)"
                                }
                              },
                              "id": 6713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1316:21:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IManager_$1738",
                                "typeString": "contract IManager"
                              }
                            },
                            "id": 6714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toStakedCelo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1730,
                            "src": "1316:34:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view external returns (uint256)"
                            }
                          },
                          "id": 6716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1316:44:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6701,
                        "id": 6717,
                        "nodeType": "Return",
                        "src": "1309:51:54"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "functionSelector": "7eace892",
            "id": 6724,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutputAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6698,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1189:8:54"
            },
            "parameters": {
              "id": 6697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6690,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6724,
                  "src": "1112:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1112:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6692,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6724,
                  "src": "1129:7:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6691,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1129:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6694,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6724,
                  "src": "1140:13:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6693,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6696,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6724,
                  "src": "1157:19:54",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6695,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1108:71:54"
            },
            "returnParameters": {
              "id": 6701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6700,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6724,
                  "src": "1207:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6699,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1207:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1206:16:54"
            },
            "scope": 6729,
            "src": "1084:308:54",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6727,
              "nodeType": "Block",
              "src": "1422:2:54",
              "statements": []
            },
            "documentation": null,
            "id": 6728,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1402:2:54"
            },
            "returnParameters": {
              "id": 6726,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1422:0:54"
            },
            "scope": 6729,
            "src": "1395:29:54",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6730,
        "src": "239:1187:54"
      }
    ],
    "src": "32:1394:54"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/swappa/PairStCelo.sol",
      "exportedSymbols": {
        "PairStCelo": [
          6729
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.6",
            ".8"
          ]
        },
        "id": 6590,
        "name": "PragmaDirective",
        "src": "32:22:54"
      },
      {
        "attributes": {
          "SourceUnit": 219,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 6730,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6591,
        "name": "ImportDirective",
        "src": "56:51:54"
      },
      {
        "attributes": {
          "SourceUnit": 726,
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "scope": 6730,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6592,
        "name": "ImportDirective",
        "src": "108:55:54"
      },
      {
        "attributes": {
          "SourceUnit": 1739,
          "absolutePath": "project:/contracts/interfaces/stCelo/IManager.sol",
          "file": "../interfaces/stCelo/IManager.sol",
          "scope": 6730,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6593,
        "name": "ImportDirective",
        "src": "164:43:54"
      },
      {
        "attributes": {
          "SourceUnit": 5326,
          "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
          "file": "./ISwappaPairV1.sol",
          "scope": 6730,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6594,
        "name": "ImportDirective",
        "src": "208:29:54"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            5325
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6729,
            5325
          ],
          "name": "PairStCelo",
          "scope": 6730
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ISwappaPairV1",
                  "referencedDeclaration": 5325,
                  "type": "contract ISwappaPairV1"
                },
                "id": 6595,
                "name": "UserDefinedTypeName",
                "src": "262:13:54"
              }
            ],
            "id": 6596,
            "name": "InheritanceSpecifier",
            "src": "262:13:54"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 218,
                  "type": "library SafeMath"
                },
                "id": 6597,
                "name": "UserDefinedTypeName",
                "src": "285:8:54"
              },
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 6598,
                "name": "ElementaryTypeName",
                "src": "298:4:54"
              }
            ],
            "id": 6599,
            "name": "UsingForDirective",
            "src": "279:24:54"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "CELO_ADDRESS",
              "overrides": null,
              "scope": 6729,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 6600,
                "name": "ElementaryTypeName",
                "src": "306:7:54"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "307834373145634533373530446132333766393342384533333963353336393839623839373861343338",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "address payable",
                  "value": "0x471EcE3750Da237f93B8E339c536989b8978a438"
                },
                "id": 6601,
                "name": "Literal",
                "src": "338:42:54"
              }
            ],
            "id": 6602,
            "name": "VariableDeclaration",
            "src": "306:74:54"
          },
          {
            "attributes": {
              "baseFunctions": [
                5311
              ],
              "documentation": null,
              "functionSelector": "32ef8314",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "swap",
              "scope": 6729,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 6612,
                "name": "OverrideSpecifier",
                "src": "482:8:54"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "input",
                      "overrides": null,
                      "scope": 6671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6603,
                        "name": "ElementaryTypeName",
                        "src": "401:7:54"
                      }
                    ],
                    "id": 6604,
                    "name": "VariableDeclaration",
                    "src": "401:13:54"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "output",
                      "overrides": null,
                      "scope": 6671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6605,
                        "name": "ElementaryTypeName",
                        "src": "418:7:54"
                      }
                    ],
                    "id": 6606,
                    "name": "VariableDeclaration",
                    "src": "418:14:54"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "overrides": null,
                      "scope": 6671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6607,
                        "name": "ElementaryTypeName",
                        "src": "436:7:54"
                      }
                    ],
                    "id": 6608,
                    "name": "VariableDeclaration",
                    "src": "436:10:54"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6671,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6609,
                        "name": "ElementaryTypeName",
                        "src": "450:5:54"
                      }
                    ],
                    "id": 6610,
                    "name": "VariableDeclaration",
                    "src": "450:19:54"
                  }
                ],
                "id": 6611,
                "name": "ParameterList",
                "src": "397:75:54"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6613,
                "name": "ParameterList",
                "src": "491:0:54"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "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_c2b28497ed3c7e61730b4c5638f499a71a822ad08d969c690192fde8bd5e0cde",
                                  "typeString": "literal_string \"PairStCelo: Incorrect Input\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6614,
                            "name": "Identifier",
                            "src": "495:7:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6604,
                                  "type": "address",
                                  "value": "input"
                                },
                                "id": 6615,
                                "name": "Identifier",
                                "src": "503:5:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6602,
                                  "type": "address",
                                  "value": "CELO_ADDRESS"
                                },
                                "id": 6616,
                                "name": "Identifier",
                                "src": "512:12:54"
                              }
                            ],
                            "id": 6617,
                            "name": "BinaryOperation",
                            "src": "503:21:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "50616972537443656c6f3a20496e636f727265637420496e707574",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairStCelo: Incorrect Input\"",
                              "value": "PairStCelo: Incorrect Input"
                            },
                            "id": 6618,
                            "name": "Literal",
                            "src": "526:29:54"
                          }
                        ],
                        "id": 6619,
                        "name": "FunctionCall",
                        "src": "495:61:54"
                      }
                    ],
                    "id": 6620,
                    "name": "ExpressionStatement",
                    "src": "495:61:54"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6622
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "managerAddr",
                          "overrides": null,
                          "scope": 6670,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address payable",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "payable",
                              "type": "address payable"
                            },
                            "id": 6621,
                            "name": "ElementaryTypeName",
                            "src": "560:15:54"
                          }
                        ],
                        "id": 6622,
                        "name": "VariableDeclaration",
                        "src": "560:27:54"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6688,
                              "type": "function (bytes memory) pure returns (address payable)",
                              "value": "parseData"
                            },
                            "id": 6623,
                            "name": "Identifier",
                            "src": "590:9:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6610,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 6624,
                            "name": "Identifier",
                            "src": "600:4:54"
                          }
                        ],
                        "id": 6625,
                        "name": "FunctionCall",
                        "src": "590:15:54"
                      }
                    ],
                    "id": 6626,
                    "name": "VariableDeclarationStatement",
                    "src": "560:45:54"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6628
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "inputAmount",
                          "overrides": null,
                          "scope": 6670,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 6627,
                            "name": "ElementaryTypeName",
                            "src": "609:4:54"
                          }
                        ],
                        "id": 6628,
                        "name": "VariableDeclaration",
                        "src": "609:16:54"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "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_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balanceOf",
                              "referencedDeclaration": 325,
                              "type": "function (address) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract ERC20",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 725,
                                      "type": "type(contract ERC20)",
                                      "value": "ERC20"
                                    },
                                    "id": 6629,
                                    "name": "Identifier",
                                    "src": "628:5:54"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6604,
                                      "type": "address",
                                      "value": "input"
                                    },
                                    "id": 6630,
                                    "name": "Identifier",
                                    "src": "634:5:54"
                                  }
                                ],
                                "id": 6631,
                                "name": "FunctionCall",
                                "src": "628:12:54"
                              }
                            ],
                            "id": 6632,
                            "name": "MemberAccess",
                            "src": "628:22:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "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$_PairStCelo_$6729",
                                      "typeString": "contract PairStCelo"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 6633,
                                    "name": "ElementaryTypeName",
                                    "src": "651:7:54"
                                  }
                                ],
                                "id": 6634,
                                "name": "ElementaryTypeNameExpression",
                                "src": "651:7:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract PairStCelo",
                                  "value": "this"
                                },
                                "id": 6635,
                                "name": "Identifier",
                                "src": "659:4:54"
                              }
                            ],
                            "id": 6636,
                            "name": "FunctionCall",
                            "src": "651:13:54"
                          }
                        ],
                        "id": 6637,
                        "name": "FunctionCall",
                        "src": "628:37:54"
                      }
                    ],
                    "id": 6638,
                    "name": "VariableDeclarationStatement",
                    "src": "609:56:54"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "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
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "type": "function () payable external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "deposit",
                                  "referencedDeclaration": 1723,
                                  "type": "function () payable external"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract IManager",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1738,
                                          "type": "type(contract IManager)",
                                          "value": "IManager"
                                        },
                                        "id": 6639,
                                        "name": "Identifier",
                                        "src": "669:8:54"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6622,
                                          "type": "address payable",
                                          "value": "managerAddr"
                                        },
                                        "id": 6640,
                                        "name": "Identifier",
                                        "src": "678:11:54"
                                      }
                                    ],
                                    "id": 6641,
                                    "name": "FunctionCall",
                                    "src": "669:21:54"
                                  }
                                ],
                                "id": 6642,
                                "name": "MemberAccess",
                                "src": "669:29:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6628,
                                  "type": "uint256",
                                  "value": "inputAmount"
                                },
                                "id": 6643,
                                "name": "Identifier",
                                "src": "706:11:54"
                              }
                            ],
                            "id": 6644,
                            "name": "FunctionCallOptions",
                            "src": "669:49:54"
                          }
                        ],
                        "id": 6645,
                        "name": "FunctionCall",
                        "src": "669:51:54"
                      }
                    ],
                    "id": 6646,
                    "name": "ExpressionStatement",
                    "src": "669:51:54"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6648
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "outputAmount",
                          "overrides": null,
                          "scope": 6670,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 6647,
                            "name": "ElementaryTypeName",
                            "src": "724:4:54"
                          }
                        ],
                        "id": 6648,
                        "name": "VariableDeclaration",
                        "src": "724:17:54"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "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_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balanceOf",
                              "referencedDeclaration": 325,
                              "type": "function (address) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract ERC20",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 725,
                                      "type": "type(contract ERC20)",
                                      "value": "ERC20"
                                    },
                                    "id": 6649,
                                    "name": "Identifier",
                                    "src": "744:5:54"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6606,
                                      "type": "address",
                                      "value": "output"
                                    },
                                    "id": 6650,
                                    "name": "Identifier",
                                    "src": "750:6:54"
                                  }
                                ],
                                "id": 6651,
                                "name": "FunctionCall",
                                "src": "744:13:54"
                              }
                            ],
                            "id": 6652,
                            "name": "MemberAccess",
                            "src": "744:23:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "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$_PairStCelo_$6729",
                                      "typeString": "contract PairStCelo"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 6653,
                                    "name": "ElementaryTypeName",
                                    "src": "768:7:54"
                                  }
                                ],
                                "id": 6654,
                                "name": "ElementaryTypeNameExpression",
                                "src": "768:7:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract PairStCelo",
                                  "value": "this"
                                },
                                "id": 6655,
                                "name": "Identifier",
                                "src": "776:4:54"
                              }
                            ],
                            "id": 6656,
                            "name": "FunctionCall",
                            "src": "768:13:54"
                          }
                        ],
                        "id": 6657,
                        "name": "FunctionCall",
                        "src": "744:38:54"
                      }
                    ],
                    "id": 6658,
                    "name": "VariableDeclarationStatement",
                    "src": "724:58:54"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "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_72102a2f448a4f40b1d3c08013419a120ffb1802794c739e30874dd238d57a8b",
                                  "typeString": "literal_string \"PairStCelo: Transfer Failed\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6659,
                            "name": "Identifier",
                            "src": "786:7:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "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_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "transfer",
                                  "referencedDeclaration": 346,
                                  "type": "function (address,uint256) external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract ERC20",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 725,
                                          "type": "type(contract ERC20)",
                                          "value": "ERC20"
                                        },
                                        "id": 6660,
                                        "name": "Identifier",
                                        "src": "794:5:54"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6606,
                                          "type": "address",
                                          "value": "output"
                                        },
                                        "id": 6661,
                                        "name": "Identifier",
                                        "src": "800:6:54"
                                      }
                                    ],
                                    "id": 6662,
                                    "name": "FunctionCall",
                                    "src": "794:13:54"
                                  }
                                ],
                                "id": 6663,
                                "name": "MemberAccess",
                                "src": "794:22:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6608,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 6664,
                                "name": "Identifier",
                                "src": "817:2:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6648,
                                  "type": "uint256",
                                  "value": "outputAmount"
                                },
                                "id": 6665,
                                "name": "Identifier",
                                "src": "821:12:54"
                              }
                            ],
                            "id": 6666,
                            "name": "FunctionCall",
                            "src": "794:40:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "50616972537443656c6f3a205472616e73666572204661696c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairStCelo: Transfer Failed\"",
                              "value": "PairStCelo: Transfer Failed"
                            },
                            "id": 6667,
                            "name": "Literal",
                            "src": "836:29:54"
                          }
                        ],
                        "id": 6668,
                        "name": "FunctionCall",
                        "src": "786:80:54"
                      }
                    ],
                    "id": 6669,
                    "name": "ExpressionStatement",
                    "src": "786:80:54"
                  }
                ],
                "id": 6670,
                "name": "Block",
                "src": "491:379:54"
              }
            ],
            "id": 6671,
            "name": "FunctionDefinition",
            "src": "384:486:54"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "parseData",
              "overrides": null,
              "scope": 6729,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6688,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6672,
                        "name": "ElementaryTypeName",
                        "src": "892:5:54"
                      }
                    ],
                    "id": 6673,
                    "name": "VariableDeclaration",
                    "src": "892:17:54"
                  }
                ],
                "id": 6674,
                "name": "ParameterList",
                "src": "891:19:54"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "managerAddr",
                      "overrides": null,
                      "scope": 6688,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 6675,
                        "name": "ElementaryTypeName",
                        "src": "933:15:54"
                      }
                    ],
                    "id": 6676,
                    "name": "VariableDeclaration",
                    "src": "933:27:54"
                  }
                ],
                "id": 6677,
                "name": "ParameterList",
                "src": "932:29:54"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "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_62d701754d3a9f647524e2d17328608023eb7685e7097e53454c7a2b2342c35f",
                                  "typeString": "literal_string \"PairStCelo: invalid data!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6678,
                            "name": "Identifier",
                            "src": "966:7:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6673,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 6679,
                                    "name": "Identifier",
                                    "src": "974:4:54"
                                  }
                                ],
                                "id": 6680,
                                "name": "MemberAccess",
                                "src": "974:11:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3230",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 20",
                                  "value": "20"
                                },
                                "id": 6681,
                                "name": "Literal",
                                "src": "989:2:54"
                              }
                            ],
                            "id": 6682,
                            "name": "BinaryOperation",
                            "src": "974:17:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "50616972537443656c6f3a20696e76616c6964206461746121",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"PairStCelo: invalid data!\"",
                              "value": "PairStCelo: invalid data!"
                            },
                            "id": 6683,
                            "name": "Literal",
                            "src": "993:27:54"
                          }
                        ],
                        "id": 6684,
                        "name": "FunctionCall",
                        "src": "966:55:54"
                      }
                    ],
                    "id": 6685,
                    "name": "ExpressionStatement",
                    "src": "966:55:54"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 6673,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1064:4:54",
                          "valueSize": 1
                        },
                        {
                          "declaration": 6676,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1039:11:54",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    managerAddr := mload(add(data, 20))\n}"
                    },
                    "children": [],
                    "id": 6686,
                    "name": "InlineAssembly",
                    "src": "1025:53:54"
                  }
                ],
                "id": 6687,
                "name": "Block",
                "src": "962:119:54"
              }
            ],
            "id": 6688,
            "name": "FunctionDefinition",
            "src": "873:208:54"
          },
          {
            "attributes": {
              "baseFunctions": [
                5324
              ],
              "documentation": null,
              "functionSelector": "7eace892",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getOutputAmount",
              "scope": 6729,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 6698,
                "name": "OverrideSpecifier",
                "src": "1189:8:54"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "input",
                      "overrides": null,
                      "scope": 6724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6689,
                        "name": "ElementaryTypeName",
                        "src": "1112:7:54"
                      }
                    ],
                    "id": 6690,
                    "name": "VariableDeclaration",
                    "src": "1112:13:54"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6691,
                        "name": "ElementaryTypeName",
                        "src": "1129:7:54"
                      }
                    ],
                    "id": 6692,
                    "name": "VariableDeclaration",
                    "src": "1129:7:54"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "overrides": null,
                      "scope": 6724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 6693,
                        "name": "ElementaryTypeName",
                        "src": "1140:4:54"
                      }
                    ],
                    "id": 6694,
                    "name": "VariableDeclaration",
                    "src": "1140:13:54"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6724,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6695,
                        "name": "ElementaryTypeName",
                        "src": "1157:5:54"
                      }
                    ],
                    "id": 6696,
                    "name": "VariableDeclaration",
                    "src": "1157:19:54"
                  }
                ],
                "id": 6697,
                "name": "ParameterList",
                "src": "1108:71:54"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "overrides": null,
                      "scope": 6724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 6699,
                        "name": "ElementaryTypeName",
                        "src": "1207:4:54"
                      }
                    ],
                    "id": 6700,
                    "name": "VariableDeclaration",
                    "src": "1207:14:54"
                  }
                ],
                "id": 6701,
                "name": "ParameterList",
                "src": "1206:16:54"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6690,
                              "type": "address",
                              "value": "input"
                            },
                            "id": 6702,
                            "name": "Identifier",
                            "src": "1231:5:54"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6602,
                              "type": "address",
                              "value": "CELO_ADDRESS"
                            },
                            "id": 6703,
                            "name": "Identifier",
                            "src": "1240:12:54"
                          }
                        ],
                        "id": 6704,
                        "name": "BinaryOperation",
                        "src": "1231:21:54"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                6706
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "managerAddr",
                                  "overrides": null,
                                  "scope": 6718,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "address payable",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "stateMutability": "payable",
                                      "type": "address payable"
                                    },
                                    "id": 6705,
                                    "name": "ElementaryTypeName",
                                    "src": "1259:15:54"
                                  }
                                ],
                                "id": 6706,
                                "name": "VariableDeclaration",
                                "src": "1259:27:54"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6688,
                                      "type": "function (bytes memory) pure returns (address payable)",
                                      "value": "parseData"
                                    },
                                    "id": 6707,
                                    "name": "Identifier",
                                    "src": "1289:9:54"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6696,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 6708,
                                    "name": "Identifier",
                                    "src": "1299:4:54"
                                  }
                                ],
                                "id": 6709,
                                "name": "FunctionCall",
                                "src": "1289:15:54"
                              }
                            ],
                            "id": 6710,
                            "name": "VariableDeclarationStatement",
                            "src": "1259:45:54"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 6701
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "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": "toStakedCelo",
                                      "referencedDeclaration": 1730,
                                      "type": "function (uint256) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IManager",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1738,
                                              "type": "type(contract IManager)",
                                              "value": "IManager"
                                            },
                                            "id": 6711,
                                            "name": "Identifier",
                                            "src": "1316:8:54"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6706,
                                              "type": "address payable",
                                              "value": "managerAddr"
                                            },
                                            "id": 6712,
                                            "name": "Identifier",
                                            "src": "1325:11:54"
                                          }
                                        ],
                                        "id": 6713,
                                        "name": "FunctionCall",
                                        "src": "1316:21:54"
                                      }
                                    ],
                                    "id": 6714,
                                    "name": "MemberAccess",
                                    "src": "1316:34:54"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6694,
                                      "type": "uint256",
                                      "value": "amountIn"
                                    },
                                    "id": 6715,
                                    "name": "Identifier",
                                    "src": "1351:8:54"
                                  }
                                ],
                                "id": 6716,
                                "name": "FunctionCall",
                                "src": "1316:44:54"
                              }
                            ],
                            "id": 6717,
                            "name": "Return",
                            "src": "1309:51:54"
                          }
                        ],
                        "id": 6718,
                        "name": "Block",
                        "src": "1254:111:54"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 6701
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6719,
                                "name": "Literal",
                                "src": "1383:1:54"
                              }
                            ],
                            "id": 6720,
                            "name": "Return",
                            "src": "1376:8:54"
                          }
                        ],
                        "id": 6721,
                        "name": "Block",
                        "src": "1371:18:54"
                      }
                    ],
                    "id": 6722,
                    "name": "IfStatement",
                    "src": "1227:162:54"
                  }
                ],
                "id": 6723,
                "name": "Block",
                "src": "1223:169:54"
              }
            ],
            "id": 6724,
            "name": "FunctionDefinition",
            "src": "1084:308:54"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "receive",
              "modifiers": [
                null
              ],
              "name": "",
              "overrides": null,
              "scope": 6729,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6725,
                "name": "ParameterList",
                "src": "1402:2:54"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6726,
                "name": "ParameterList",
                "src": "1422:0:54"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 6727,
                "name": "Block",
                "src": "1422:2:54"
              }
            ],
            "id": 6728,
            "name": "FunctionDefinition",
            "src": "1395:29:54"
          }
        ],
        "id": 6729,
        "name": "ContractDefinition",
        "src": "239:1187:54"
      }
    ],
    "id": 6730,
    "name": "SourceUnit",
    "src": "32:1394:54"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-02-07T17:50:42.840Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}