{
  "contractName": "TickMath",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\"},\"userdoc\":{\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\"}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/uniswap/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/uniswap/TickMath.sol\":{\"keccak256\":\"0xda8c2c0b12d2976acfd364453ba5f5bf0117ba3c91175ee9e1067d3fb26944d9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3f3d2d7c2723c91830c74d96292f28fc1cfe28d388cdb9c1a5ebadb4c2b96f81\",\"dweb:/ipfs/QmYU4wk8MEm33wVWR38LoncvR7b8PP1mLuGBKX3dUpYJVE\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bded901c4e2c4178c43f5e3aadd2a8881ad0c233577824e7fe1d20dc6a0cb0bf64736f6c63430006080033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bded901c4e2c4178c43f5e3aadd2a8881ad0c233577824e7fe1d20dc6a0cb0bf64736f6c63430006080033",
  "immutableReferences": {},
  "sourceMap": "313:8331:43:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "313:8331:43:-:0;;;;;;12:1:-1;9;2:12",
  "source": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0 <0.8.0;\n\n/// @title Math library for computing sqrt prices from ticks and vice versa\n/// @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n/// prices between 2**-128 and 2**128\nlibrary TickMath {\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\n    int24 internal constant MIN_TICK = -887272;\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\n    int24 internal constant MAX_TICK = -MIN_TICK;\n\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\n\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96\n    /// @dev Throws if |tick| > max tick\n    /// @param tick The input tick for the above formula\n    /// @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n    /// at the given tick\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\n        require(absTick <= uint256(MAX_TICK), 'T');\n\n        uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\n        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\n        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\n        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\n        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\n        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\n        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\n        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\n        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\n        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\n        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\n        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\n        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\n        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\n        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\n        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\n        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\n        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\n        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\n        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\n\n        if (tick > 0) ratio = type(uint256).max / ratio;\n\n        // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\n        // we then downcast because we know the result always fits within 160 bits due to our tick input constraint\n        // we round up in the division so getTickAtSqrtRatio of the output price is always consistent\n        sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\n    }\n\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n    /// ever return.\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\n        // second inequality must be < because the price can never reach the price at the max tick\n        require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\n\n        uint256 r = ratio;\n        uint256 msb = 0;\n\n        assembly {\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(5, gt(r, 0xFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(4, gt(r, 0xFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(3, gt(r, 0xFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(2, gt(r, 0xF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(1, gt(r, 0x3))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := gt(r, 0x1)\n            msb := or(msb, f)\n        }\n\n        if (msb >= 128) r = ratio >> (msb - 127);\n        else r = ratio << (127 - msb);\n\n        int256 log_2 = (int256(msb) - 128) << 64;\n\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(63, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(62, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(61, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(60, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(59, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(58, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(57, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(56, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(55, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(54, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(53, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(52, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(51, f))\n            r := shr(f, r)\n        }\n        assembly {\n            r := shr(127, mul(r, r))\n            let f := shr(128, r)\n            log_2 := or(log_2, shl(50, f))\n        }\n\n        int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number\n\n        int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\n        int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\n\n        tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\n    }\n}\n",
  "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/interfaces/uniswap/TickMath.sol",
  "ast": {
    "absolutePath": "project:/contracts/interfaces/uniswap/TickMath.sol",
    "exportedSymbols": {
      "TickMath": [
        5282
      ]
    },
    "id": 5283,
    "license": "GPL-2.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4753,
        "literals": [
          "solidity",
          ">=",
          "0.5",
          ".0",
          "<",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "45:31:43"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 4754,
          "nodeType": "StructuredDocumentation",
          "src": "78:235:43",
          "text": "@title Math library for computing sqrt prices from ticks and vice versa\n @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n prices between 2**-128 and 2**128"
        },
        "fullyImplemented": true,
        "id": 5282,
        "linearizedBaseContracts": [
          5282
        ],
        "name": "TickMath",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 4758,
            "mutability": "constant",
            "name": "MIN_TICK",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5282,
            "src": "449:42:43",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int24",
              "typeString": "int24"
            },
            "typeName": {
              "id": 4755,
              "name": "int24",
              "nodeType": "ElementaryTypeName",
              "src": "449:5:43",
              "typeDescriptions": {
                "typeIdentifier": "t_int24",
                "typeString": "int24"
              }
            },
            "value": {
              "argumentTypes": null,
              "id": 4757,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "nodeType": "UnaryOperation",
              "operator": "-",
              "prefix": true,
              "src": "484:7:43",
              "subExpression": {
                "argumentTypes": null,
                "hexValue": "383837323732",
                "id": 4756,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "485:6:43",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_887272_by_1",
                  "typeString": "int_const 887272"
                },
                "value": "887272"
              },
              "typeDescriptions": {
                "typeIdentifier": "t_rational_minus_887272_by_1",
                "typeString": "int_const -887272"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 4762,
            "mutability": "constant",
            "name": "MAX_TICK",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5282,
            "src": "609:44:43",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int24",
              "typeString": "int24"
            },
            "typeName": {
              "id": 4759,
              "name": "int24",
              "nodeType": "ElementaryTypeName",
              "src": "609:5:43",
              "typeDescriptions": {
                "typeIdentifier": "t_int24",
                "typeString": "int24"
              }
            },
            "value": {
              "argumentTypes": null,
              "id": 4761,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "nodeType": "UnaryOperation",
              "operator": "-",
              "prefix": true,
              "src": "644:9:43",
              "subExpression": {
                "argumentTypes": null,
                "id": 4760,
                "name": "MIN_TICK",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 4758,
                "src": "645:8:43",
                "typeDescriptions": {
                  "typeIdentifier": "t_int24",
                  "typeString": "int24"
                }
              },
              "typeDescriptions": {
                "typeIdentifier": "t_int24",
                "typeString": "int24"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 4765,
            "mutability": "constant",
            "name": "MIN_SQRT_RATIO",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5282,
            "src": "781:53:43",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint160",
              "typeString": "uint160"
            },
            "typeName": {
              "id": 4763,
              "name": "uint160",
              "nodeType": "ElementaryTypeName",
              "src": "781:7:43",
              "typeDescriptions": {
                "typeIdentifier": "t_uint160",
                "typeString": "uint160"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34323935313238373339",
              "id": 4764,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "824:10:43",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4295128739_by_1",
                "typeString": "int_const 4295128739"
              },
              "value": "4295128739"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 4768,
            "mutability": "constant",
            "name": "MAX_SQRT_RATIO",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5282,
            "src": "961:92:43",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint160",
              "typeString": "uint160"
            },
            "typeName": {
              "id": 4766,
              "name": "uint160",
              "nodeType": "ElementaryTypeName",
              "src": "961:7:43",
              "typeDescriptions": {
                "typeIdentifier": "t_uint160",
                "typeString": "uint160"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432",
              "id": 4767,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1004:49:43",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1461446703485210103287273052203988822378723970342_by_1",
                "typeString": "int_const 1461...(41 digits omitted)...0342"
              },
              "value": "1461446703485210103287273052203988822378723970342"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5141,
              "nodeType": "Block",
              "src": "1447:2495:43",
              "statements": [
                {
                  "assignments": [
                    4777
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4777,
                      "mutability": "mutable",
                      "name": "absTick",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5141,
                      "src": "1457:15:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4776,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1457:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4797,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "id": 4780,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4778,
                        "name": "tick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4771,
                        "src": "1475:4:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1482:1:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1475:8:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4793,
                              "name": "tick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4771,
                              "src": "1526:4:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 4792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1519:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 4791,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1519:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1519:12:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 4790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1511:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 4789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1511:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 4795,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1511:21:43",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "1475:57:43",
                    "trueExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "1494:13:43",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4785,
                                "name": "tick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4771,
                                "src": "1502:4:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "id": 4784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1495:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 4783,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1495:6:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1495:12:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 4782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1486:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 4781,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1486:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 4788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1486:22:43",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1457:75:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4799,
                          "name": "absTick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4777,
                          "src": "1550:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4802,
                              "name": "MAX_TICK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4762,
                              "src": "1569:8:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 4801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1561:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 4800,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1561:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1561:17:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1550:28:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54",
                        "id": 4805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1580:3:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc",
                          "typeString": "literal_string \"T\""
                        },
                        "value": "T"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc",
                          "typeString": "literal_string \"T\""
                        }
                      ],
                      "id": 4798,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1542:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1542:42:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4807,
                  "nodeType": "ExpressionStatement",
                  "src": "1542:42:43"
                },
                {
                  "assignments": [
                    4809
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4809,
                      "mutability": "mutable",
                      "name": "ratio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5141,
                      "src": "1595:13:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4808,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1595:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4818,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4814,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4810,
                          "name": "absTick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4777,
                          "src": "1611:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307831",
                          "id": 4811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1621:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "0x1"
                        },
                        "src": "1611:13:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 4813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1628:1:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "1611:18:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                      "id": 4816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1669:35:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                        "typeString": "int_const 3402...(31 digits omitted)...1456"
                      },
                      "value": "0x100000000000000000000000000000000"
                    },
                    "id": 4817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "1611:93:43",
                    "trueExpression": {
                      "argumentTypes": null,
                      "hexValue": "30786666666362393333626436666164333761613264313632643161353934303031",
                      "id": 4815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1632:34:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_340265354078544963557816517032075149313_by_1",
                        "typeString": "int_const 3402...(31 digits omitted)...9313"
                      },
                      "value": "0xfffcb933bd6fad37aa2d162d1a594001"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint136",
                      "typeString": "uint136"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1595:109:43"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4819,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "1718:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307832",
                        "id": 4820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1728:3:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "0x2"
                      },
                      "src": "1718:13:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1735:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1718:18:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4833,
                  "nodeType": "IfStatement",
                  "src": "1714:83:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4831,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4824,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "1738:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4825,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "1747:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786666663937323732333733643431333235396134363939303538306532313361",
                                "id": 4826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1755:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340248342086729790484326174814286782778_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...2778"
                                },
                                "value": "0xfff97272373d413259a46990580e213a"
                              },
                              "src": "1747:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4828,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1746:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1794:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "1746:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1738:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4832,
                    "nodeType": "ExpressionStatement",
                    "src": "1738:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4834,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "1811:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307834",
                        "id": 4835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1821:3:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "0x4"
                      },
                      "src": "1811:13:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1828:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1811:18:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4848,
                  "nodeType": "IfStatement",
                  "src": "1807:83:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4839,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "1831:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4840,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "1840:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786666663265353066356636353639333265663132333537636633633766646363",
                                "id": 4841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1848:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340214320654664324051920982716015181260_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1260"
                                },
                                "value": "0xfff2e50f5f656932ef12357cf3c7fdcc"
                              },
                              "src": "1840:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4843,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1839:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1887:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "1839:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1831:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4847,
                    "nodeType": "ExpressionStatement",
                    "src": "1831:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4851,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4849,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "1904:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307838",
                        "id": 4850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1914:3:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8_by_1",
                          "typeString": "int_const 8"
                        },
                        "value": "0x8"
                      },
                      "src": "1904:13:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1921:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1904:18:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4863,
                  "nodeType": "IfStatement",
                  "src": "1900:83:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4861,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4854,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "1924:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4855,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "1933:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786666653563616361376531306534653631633336323465616130393431636430",
                                "id": 4856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1941:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340146287995602323631171512101879684304_by_1",
                                  "typeString": "int_const 3401...(31 digits omitted)...4304"
                                },
                                "value": "0xffe5caca7e10e4e61c3624eaa0941cd0"
                              },
                              "src": "1933:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4858,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1932:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1980:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "1932:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1924:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4862,
                    "nodeType": "ExpressionStatement",
                    "src": "1924:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4864,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "1997:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783130",
                        "id": 4865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2007:4:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        },
                        "value": "0x10"
                      },
                      "src": "1997:14:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2015:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1997:19:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4878,
                  "nodeType": "IfStatement",
                  "src": "1993:84:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4869,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2018:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4870,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2027:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786666636239383433643630663631353963396462353838333563393236363434",
                                "id": 4871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2035:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340010263488231146823593991679159461444_by_1",
                                  "typeString": "int_const 3400...(31 digits omitted)...1444"
                                },
                                "value": "0xffcb9843d60f6159c9db58835c926644"
                              },
                              "src": "2027:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4873,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2026:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2074:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2026:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2018:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4877,
                    "nodeType": "ExpressionStatement",
                    "src": "2018:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4879,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2091:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783230",
                        "id": 4880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2101:4:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "0x20"
                      },
                      "src": "2091:14:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2109:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2091:19:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4893,
                  "nodeType": "IfStatement",
                  "src": "2087:84:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4891,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4884,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2112:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4885,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2121:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786666393733623431666139386330383134373265363839366466623235346330",
                                "id": 4886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2129:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_339738377640345403697157401104375502016_by_1",
                                  "typeString": "int_const 3397...(31 digits omitted)...2016"
                                },
                                "value": "0xff973b41fa98c081472e6896dfb254c0"
                              },
                              "src": "2121:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4888,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2120:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2168:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2120:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2112:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4892,
                    "nodeType": "ExpressionStatement",
                    "src": "2112:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4896,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4894,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2185:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783430",
                        "id": 4895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2195:4:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_64_by_1",
                          "typeString": "int_const 64"
                        },
                        "value": "0x40"
                      },
                      "src": "2185:14:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2203:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2185:19:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4908,
                  "nodeType": "IfStatement",
                  "src": "2181:84:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4899,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2206:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4905,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4900,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2215:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786666326561313634363663393661333834336563373862333236623532383631",
                                "id": 4901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2223:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_339195258003219555707034227454543997025_by_1",
                                  "typeString": "int_const 3391...(31 digits omitted)...7025"
                                },
                                "value": "0xff2ea16466c96a3843ec78b326b52861"
                              },
                              "src": "2215:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4903,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2214:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2262:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2214:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2206:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4907,
                    "nodeType": "ExpressionStatement",
                    "src": "2206:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4909,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2279:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783830",
                        "id": 4910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2289:4:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_128_by_1",
                          "typeString": "int_const 128"
                        },
                        "value": "0x80"
                      },
                      "src": "2279:14:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2297:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2279:19:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4923,
                  "nodeType": "IfStatement",
                  "src": "2275:84:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4921,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4914,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2300:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4915,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2309:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786665356465653034366139396132613831316334363166313936396333303533",
                                "id": 4916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2317:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_338111622100601834656805679988414885971_by_1",
                                  "typeString": "int_const 3381...(31 digits omitted)...5971"
                                },
                                "value": "0xfe5dee046a99a2a811c461f1969c3053"
                              },
                              "src": "2309:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4918,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2308:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2356:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2308:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2300:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4922,
                    "nodeType": "ExpressionStatement",
                    "src": "2300:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4926,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4924,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2373:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3078313030",
                        "id": 4925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2383:5:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_256_by_1",
                          "typeString": "int_const 256"
                        },
                        "value": "0x100"
                      },
                      "src": "2373:15:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2392:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2373:20:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4938,
                  "nodeType": "IfStatement",
                  "src": "2369:85:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4936,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4929,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2395:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4930,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2404:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786663626538366337393030613838616564636666633833623437396161336134",
                                "id": 4931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2412:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_335954724994790223023589805789778977700_by_1",
                                  "typeString": "int_const 3359...(31 digits omitted)...7700"
                                },
                                "value": "0xfcbe86c7900a88aedcffc83b479aa3a4"
                              },
                              "src": "2404:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4933,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2403:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2451:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2403:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2395:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4937,
                    "nodeType": "ExpressionStatement",
                    "src": "2395:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4939,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2468:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3078323030",
                        "id": 4940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2478:5:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_512_by_1",
                          "typeString": "int_const 512"
                        },
                        "value": "0x200"
                      },
                      "src": "2468:15:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4942,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2487:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2468:20:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4953,
                  "nodeType": "IfStatement",
                  "src": "2464:85:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4951,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4944,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2490:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4945,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2499:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786639383761373235336163343133313736663262303734636637383135653534",
                                "id": 4946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2507:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_331682121138379247127172139078559817300_by_1",
                                  "typeString": "int_const 3316...(31 digits omitted)...7300"
                                },
                                "value": "0xf987a7253ac413176f2b074cf7815e54"
                              },
                              "src": "2499:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4948,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2498:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2546:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2498:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2490:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4952,
                    "nodeType": "ExpressionStatement",
                    "src": "2490:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4956,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4954,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2563:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3078343030",
                        "id": 4955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2573:5:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1024_by_1",
                          "typeString": "int_const 1024"
                        },
                        "value": "0x400"
                      },
                      "src": "2563:15:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2582:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2563:20:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4968,
                  "nodeType": "IfStatement",
                  "src": "2559:85:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4959,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2585:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4960,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2594:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786633333932623038323262373030303539343063376133393865346237306633",
                                "id": 4961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2602:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_323299236684853023288211250268160618739_by_1",
                                  "typeString": "int_const 3232...(31 digits omitted)...8739"
                                },
                                "value": "0xf3392b0822b70005940c7a398e4b70f3"
                              },
                              "src": "2594:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4963,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2593:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2641:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2593:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2585:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4967,
                    "nodeType": "ExpressionStatement",
                    "src": "2585:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4969,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2658:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3078383030",
                        "id": 4970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2668:5:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2048_by_1",
                          "typeString": "int_const 2048"
                        },
                        "value": "0x800"
                      },
                      "src": "2658:15:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2677:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2658:20:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4983,
                  "nodeType": "IfStatement",
                  "src": "2654:85:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4981,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4974,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2680:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4975,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2689:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786537313539343735613263323962373434336232396337666136653838396439",
                                "id": 4976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2697:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_307163716377032989948697243942600083929_by_1",
                                  "typeString": "int_const 3071...(31 digits omitted)...3929"
                                },
                                "value": "0xe7159475a2c29b7443b29c7fa6e889d9"
                              },
                              "src": "2689:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4978,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2688:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2736:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2688:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2680:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4982,
                    "nodeType": "ExpressionStatement",
                    "src": "2680:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4984,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2753:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307831303030",
                        "id": 4985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2763:6:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4096_by_1",
                          "typeString": "int_const 4096"
                        },
                        "value": "0x1000"
                      },
                      "src": "2753:16:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2773:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2753:21:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4998,
                  "nodeType": "IfStatement",
                  "src": "2749:86:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 4989,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2776:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4990,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2785:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786430393766336264666432303232623838343561643866373932616135383235",
                                "id": 4991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2793:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_277268403626896220162999269216087595045_by_1",
                                  "typeString": "int_const 2772...(31 digits omitted)...5045"
                                },
                                "value": "0xd097f3bdfd2022b8845ad8f792aa5825"
                              },
                              "src": "2785:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4993,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2784:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 4994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2832:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2784:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2776:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4997,
                    "nodeType": "ExpressionStatement",
                    "src": "2776:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4999,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2849:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307832303030",
                        "id": 5000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2859:6:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_8192_by_1",
                          "typeString": "int_const 8192"
                        },
                        "value": "0x2000"
                      },
                      "src": "2849:16:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2869:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2849:21:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5013,
                  "nodeType": "IfStatement",
                  "src": "2845:86:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5004,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2872:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5005,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2881:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30786139663734363436326438373066646638613635646331663930653036316535",
                                "id": 5006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2889:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_225923453940442621947126027127485391333_by_1",
                                  "typeString": "int_const 2259...(31 digits omitted)...1333"
                                },
                                "value": "0xa9f746462d870fdf8a65dc1f90e061e5"
                              },
                              "src": "2881:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5008,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2880:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2928:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2880:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2872:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5012,
                    "nodeType": "ExpressionStatement",
                    "src": "2872:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5014,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "2945:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307834303030",
                        "id": 5015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2955:6:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16384_by_1",
                          "typeString": "int_const 16384"
                        },
                        "value": "0x4000"
                      },
                      "src": "2945:16:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2965:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2945:21:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5028,
                  "nodeType": "IfStatement",
                  "src": "2941:86:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5026,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5019,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "2968:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5020,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "2977:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30783730643836396131353664326131623839306262336466363262616633326637",
                                "id": 5021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2985:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_149997214084966997727330242082538205943_by_1",
                                  "typeString": "int_const 1499...(31 digits omitted)...5943"
                                },
                                "value": "0x70d869a156d2a1b890bb3df62baf32f7"
                              },
                              "src": "2977:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5023,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2976:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3024:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2976:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2968:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5027,
                    "nodeType": "ExpressionStatement",
                    "src": "2968:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5029,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "3041:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307838303030",
                        "id": 5030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3051:6:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32768_by_1",
                          "typeString": "int_const 32768"
                        },
                        "value": "0x8000"
                      },
                      "src": "3041:16:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3061:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3041:21:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5043,
                  "nodeType": "IfStatement",
                  "src": "3037:86:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5041,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5034,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "3064:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5035,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "3073:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30783331626531333566393764303866643938313233313530353534326663666136",
                                "id": 5036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3081:34:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_66119101136024775622716233608466517926_by_1",
                                  "typeString": "int_const 6611...(30 digits omitted)...7926"
                                },
                                "value": "0x31be135f97d08fd981231505542fcfa6"
                              },
                              "src": "3073:42:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5038,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3072:44:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3120:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "3072:51:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3064:59:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5042,
                    "nodeType": "ExpressionStatement",
                    "src": "3064:59:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5046,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5044,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "3137:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783130303030",
                        "id": 5045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3147:7:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_65536_by_1",
                          "typeString": "int_const 65536"
                        },
                        "value": "0x10000"
                      },
                      "src": "3137:17:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3158:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3137:22:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5058,
                  "nodeType": "IfStatement",
                  "src": "3133:86:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5049,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "3161:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5050,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "3170:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "307839616135303862356237613834653163363737646535346633653939626339",
                                "id": 5051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3178:33:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_12847376061809297530290974190478138313_by_1",
                                  "typeString": "int_const 1284...(30 digits omitted)...8313"
                                },
                                "value": "0x9aa508b5b7a84e1c677de54f3e99bc9"
                              },
                              "src": "3170:41:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5053,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3169:43:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3216:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "3169:50:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3161:58:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5057,
                    "nodeType": "ExpressionStatement",
                    "src": "3161:58:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5059,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "3233:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783230303030",
                        "id": 5060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3243:7:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_131072_by_1",
                          "typeString": "int_const 131072"
                        },
                        "value": "0x20000"
                      },
                      "src": "3233:17:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5062,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3254:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3233:22:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5073,
                  "nodeType": "IfStatement",
                  "src": "3229:85:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5071,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5064,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "3257:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5065,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "3266:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3078356436616638646564623831313936363939633332393232356565363034",
                                "id": 5066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3274:32:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_485053260817066172746253684029974020_by_1",
                                  "typeString": "int_const 4850...(28 digits omitted)...4020"
                                },
                                "value": "0x5d6af8dedb81196699c329225ee604"
                              },
                              "src": "3266:40:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5068,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3265:42:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3311:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "3265:49:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3257:57:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5072,
                    "nodeType": "ExpressionStatement",
                    "src": "3257:57:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5074,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "3328:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783430303030",
                        "id": 5075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3338:7:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_262144_by_1",
                          "typeString": "int_const 262144"
                        },
                        "value": "0x40000"
                      },
                      "src": "3328:17:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3349:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3328:22:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5088,
                  "nodeType": "IfStatement",
                  "src": "3324:83:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5086,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5079,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "3352:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5080,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "3361:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "307832323136653538346635666131656139323630343162656466653938",
                                "id": 5081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3369:30:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_691415978906521570653435304214168_by_1",
                                  "typeString": "int_const 6914...(25 digits omitted)...4168"
                                },
                                "value": "0x2216e584f5fa1ea926041bedfe98"
                              },
                              "src": "3361:38:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5083,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3360:40:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3404:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "3360:47:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3352:55:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5087,
                    "nodeType": "ExpressionStatement",
                    "src": "3352:55:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5089,
                        "name": "absTick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4777,
                        "src": "3421:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30783830303030",
                        "id": 5090,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3431:7:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_524288_by_1",
                          "typeString": "int_const 524288"
                        },
                        "value": "0x80000"
                      },
                      "src": "3421:17:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3442:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3421:22:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5103,
                  "nodeType": "IfStatement",
                  "src": "3417:78:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5094,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "3445:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5095,
                                "name": "ratio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4809,
                                "src": "3454:5:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30783438613137303339316637646334323434346538666132",
                                "id": 5096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3462:25:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1404880482679654955896180642_by_1",
                                  "typeString": "int_const 1404880482679654955896180642"
                                },
                                "value": "0x48a170391f7dc42444e8fa2"
                              },
                              "src": "3454:33:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5098,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3453:35:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3492:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "3453:42:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3445:50:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5102,
                    "nodeType": "ExpressionStatement",
                    "src": "3445:50:43"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 5106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5104,
                      "name": "tick",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4771,
                      "src": "3510:4:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3517:1:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3510:8:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5117,
                  "nodeType": "IfStatement",
                  "src": "3506:47:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5107,
                        "name": "ratio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4809,
                        "src": "3520:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3533:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5109,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3533:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "id": 5108,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "3528:4:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 5111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3528:13:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                              "typeString": "type(uint256)"
                            }
                          },
                          "id": 5112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3528:17:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5113,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4809,
                          "src": "3548:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3528:25:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3520:33:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5116,
                    "nodeType": "ExpressionStatement",
                    "src": "3520:33:43"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5118,
                      "name": "sqrtPriceX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4774,
                      "src": "3863:12:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5121,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4809,
                                  "src": "3887:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3332",
                                  "id": 5122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3896:2:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "3887:11:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 5124,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3886:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5132,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5130,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 5125,
                                      "name": "ratio",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4809,
                                      "src": "3903:5:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "%",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_rational_4294967296_by_1",
                                            "typeString": "int_const 4294967296"
                                          },
                                          "id": 5128,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 5126,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3912:1:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3332",
                                            "id": 5127,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3917:2:43",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "3912:7:43",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_4294967296_by_1",
                                            "typeString": "int_const 4294967296"
                                          }
                                        }
                                      ],
                                      "id": 5129,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3911:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4294967296_by_1",
                                        "typeString": "int_const 4294967296"
                                      }
                                    },
                                    "src": "3903:17:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5131,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3924:1:43",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "3903:22:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 5134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3932:1:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "id": 5135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "3903:30:43",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 5133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3928:1:43",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "id": 5136,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3902:32:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "3886:48:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3878:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 5119,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "3878:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5138,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3878:57:43",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "3863:72:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "id": 5140,
                  "nodeType": "ExpressionStatement",
                  "src": "3863:72:43"
                }
              ]
            },
            "documentation": {
              "id": 4769,
              "nodeType": "StructuredDocumentation",
              "src": "1060:297:43",
              "text": "@notice Calculates sqrt(1.0001^tick) * 2^96\n @dev Throws if |tick| > max tick\n @param tick The input tick for the above formula\n @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n at the given tick"
            },
            "id": 5142,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSqrtRatioAtTick",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4771,
                  "mutability": "mutable",
                  "name": "tick",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5142,
                  "src": "1390:10:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 4770,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "1390:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1389:12:43"
            },
            "returnParameters": {
              "id": 4775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4774,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5142,
                  "src": "1425:20:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 4773,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "1425:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1424:22:43"
            },
            "scope": 5282,
            "src": "1362:2580:43",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5280,
              "nodeType": "Block",
              "src": "4446:4196:43",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          "id": 5153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5151,
                            "name": "sqrtPriceX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5145,
                            "src": "4563:12:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5152,
                            "name": "MIN_SQRT_RATIO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4765,
                            "src": "4579:14:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "4563:30:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          "id": 5156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5154,
                            "name": "sqrtPriceX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5145,
                            "src": "4597:12:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5155,
                            "name": "MAX_SQRT_RATIO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4768,
                            "src": "4612:14:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "4597:29:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4563:63:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "52",
                        "id": 5158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4628:3:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2",
                          "typeString": "literal_string \"R\""
                        },
                        "value": "R"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2",
                          "typeString": "literal_string \"R\""
                        }
                      ],
                      "id": 5150,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4555:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4555:77:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5160,
                  "nodeType": "ExpressionStatement",
                  "src": "4555:77:43"
                },
                {
                  "assignments": [
                    5162
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5162,
                      "mutability": "mutable",
                      "name": "ratio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "4642:13:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5161,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4642:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5169,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5165,
                          "name": "sqrtPriceX96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5145,
                          "src": "4666:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "id": 5164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4658:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 5163,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4658:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 5166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4658:21:43",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3332",
                      "id": 5167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4683:2:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "4658:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4642:43:43"
                },
                {
                  "assignments": [
                    5171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5171,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "4696:9:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4696:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5173,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 5172,
                    "name": "ratio",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5162,
                    "src": "4708:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4696:17:43"
                },
                {
                  "assignments": [
                    5175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5175,
                      "mutability": "mutable",
                      "name": "msb",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "4723:11:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4723:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5177,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 5176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4737:1:43",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4723:15:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "4758:139:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "4772:58:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4785:1:43",
                              "type": "",
                              "value": "7"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "4791:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4794:34:43",
                                  "type": "",
                                  "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "4788:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4788:41:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "4781:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4781:49:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "4776:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4843:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "4853:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "4858:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "4850:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4850:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "4843:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4873:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "4882:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "4885:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "4878:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4878:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "4873:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4843:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4853:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4791:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4873:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4885:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5178,
                  "nodeType": "InlineAssembly",
                  "src": "4749:148:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "4915:123:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "4929:42:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4942:1:43",
                              "type": "",
                              "value": "6"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "4948:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4951:18:43",
                                  "type": "",
                                  "value": "0xFFFFFFFFFFFFFFFF"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "4945:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4945:25:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "4938:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4938:33:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "4933:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4984:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "4994:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "4999:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "4991:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4991:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "4984:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5014:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5023:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5026:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5019:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5019:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5014:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4984:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4994:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4948:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5014:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5026:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5179,
                  "nodeType": "InlineAssembly",
                  "src": "4906:132:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5056:115:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5070:34:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5083:1:43",
                              "type": "",
                              "value": "5"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5089:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5092:10:43",
                                  "type": "",
                                  "value": "0xFFFFFFFF"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "5086:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5086:17:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "5079:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5079:25:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5074:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5117:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "5127:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5132:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "5124:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5124:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "5117:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5147:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5156:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5159:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5152:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5152:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5147:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5117:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5127:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5089:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5147:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5159:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5180,
                  "nodeType": "InlineAssembly",
                  "src": "5047:124:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5189:111:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5203:30:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5216:1:43",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5222:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5225:6:43",
                                  "type": "",
                                  "value": "0xFFFF"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "5219:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5219:13:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "5212:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5212:21:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5207:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5246:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "5256:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5261:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "5253:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5253:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "5246:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5276:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5285:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5288:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5281:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5281:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5276:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5246:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5256:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5222:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5276:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5288:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5181,
                  "nodeType": "InlineAssembly",
                  "src": "5180:120:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5318:109:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5332:28:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5345:1:43",
                              "type": "",
                              "value": "3"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5351:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5354:4:43",
                                  "type": "",
                                  "value": "0xFF"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "5348:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5348:11:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "5341:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5341:19:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5336:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5373:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "5383:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5388:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "5380:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5380:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "5373:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5403:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5412:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5415:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5408:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5408:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5403:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5373:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5383:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5351:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5403:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5415:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5182,
                  "nodeType": "InlineAssembly",
                  "src": "5309:118:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5445:108:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5459:27:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5472:1:43",
                              "type": "",
                              "value": "2"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5478:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5481:3:43",
                                  "type": "",
                                  "value": "0xF"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "5475:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5475:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "5468:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5468:18:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5463:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5499:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "5509:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5514:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "5506:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5506:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "5499:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5529:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5538:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5541:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5534:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5534:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5529:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5499:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5509:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5478:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5529:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5541:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5183,
                  "nodeType": "InlineAssembly",
                  "src": "5436:117:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5571:108:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5585:27:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5598:1:43",
                              "type": "",
                              "value": "1"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5604:1:43"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5607:3:43",
                                  "type": "",
                                  "value": "0x3"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "5601:2:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5601:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "5594:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5594:18:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5589:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5625:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "5635:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5640:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "5632:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5632:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "5625:3:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5655:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5664:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5667:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5660:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5660:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5655:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5625:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5635:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5604:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5655:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5667:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5184,
                  "nodeType": "InlineAssembly",
                  "src": "5562:117:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5697:73:43",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5711:19:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5723:1:43"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5726:3:43",
                              "type": "",
                              "value": "0x1"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nodeType": "YulIdentifier",
                            "src": "5720:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5720:10:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5715:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5743:17:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "msb",
                              "nodeType": "YulIdentifier",
                              "src": "5753:3:43"
                            },
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "5758:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "5750:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5750:10:43"
                        },
                        "variableNames": [
                          {
                            "name": "msb",
                            "nodeType": "YulIdentifier",
                            "src": "5743:3:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5743:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5175,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5753:3:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5723:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5185,
                  "nodeType": "InlineAssembly",
                  "src": "5688:82:43"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5186,
                      "name": "msb",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5175,
                      "src": "5784:3:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "313238",
                      "id": 5187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5791:3:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_128_by_1",
                        "typeString": "int_const 128"
                      },
                      "value": "128"
                    },
                    "src": "5784:10:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5198,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5171,
                        "src": "5835:1:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5199,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5162,
                          "src": "5839:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "313237",
                                "id": 5200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5849:3:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_127_by_1",
                                  "typeString": "int_const 127"
                                },
                                "value": "127"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5201,
                                "name": "msb",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "5855:3:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5849:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5203,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5848:11:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5839:20:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5835:24:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5206,
                    "nodeType": "ExpressionStatement",
                    "src": "5835:24:43"
                  },
                  "id": 5207,
                  "nodeType": "IfStatement",
                  "src": "5780:79:43",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 5196,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 5189,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5171,
                        "src": "5796:1:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5190,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5162,
                          "src": "5800:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5191,
                                "name": "msb",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "5810:3:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313237",
                                "id": 5192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5816:3:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_127_by_1",
                                  "typeString": "int_const 127"
                                },
                                "value": "127"
                              },
                              "src": "5810:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5194,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5809:11:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5800:20:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5796:24:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5197,
                    "nodeType": "ExpressionStatement",
                    "src": "5796:24:43"
                  }
                },
                {
                  "assignments": [
                    5209
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5209,
                      "mutability": "mutable",
                      "name": "log_2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "5870:12:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 5208,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5870:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5219,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 5218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 5215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5212,
                                "name": "msb",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "5893:3:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5886:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 5210,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5886:6:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5886:11:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 5214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5900:3:43",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "5886:17:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 5216,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5885:19:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3634",
                      "id": 5217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5908:2:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_64_by_1",
                        "typeString": "int_const 64"
                      },
                      "value": "64"
                    },
                    "src": "5885:25:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5870:40:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5930:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5944:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5953:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5962:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5965:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "5958:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5958:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5949:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5949:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "5944:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5981:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5994:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "5999:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "5990:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5990:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "5985:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6014:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "6026:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6037:2:43",
                                  "type": "",
                                  "value": "63"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "6041:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6033:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6033:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "6023:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6023:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "6014:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6057:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "6066:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6069:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6062:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6062:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6057:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6014:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6026:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5944:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5962:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5965:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5999:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6057:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6069:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5220,
                  "nodeType": "InlineAssembly",
                  "src": "5921:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6099:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6113:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6122:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6131:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6134:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "6127:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6127:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6118:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6118:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6113:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6150:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6163:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6168:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6159:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6159:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "6154:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6183:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "6195:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6206:2:43",
                                  "type": "",
                                  "value": "62"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "6210:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6202:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6202:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "6192:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6192:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "6183:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6226:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "6235:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6238:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6231:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6231:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6226:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6183:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6195:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6113:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6131:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6134:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6168:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6226:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6238:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5221,
                  "nodeType": "InlineAssembly",
                  "src": "6090:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6268:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6282:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6291:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6300:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6303:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "6296:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6296:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6287:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6287:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6282:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6319:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6332:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6337:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6328:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6328:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "6323:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6352:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "6364:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6375:2:43",
                                  "type": "",
                                  "value": "61"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "6379:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6371:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6371:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "6361:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6361:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "6352:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6395:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "6404:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6407:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6400:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6400:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6395:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6352:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6364:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6282:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6300:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6303:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6337:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6395:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6407:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5222,
                  "nodeType": "InlineAssembly",
                  "src": "6259:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6437:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6451:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6460:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6469:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6472:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "6465:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6465:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6456:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6456:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6451:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6488:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6501:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6506:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6497:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6497:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "6492:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6521:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "6533:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6544:2:43",
                                  "type": "",
                                  "value": "60"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "6548:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6540:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6540:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "6530:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6530:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "6521:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6564:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "6573:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6576:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6569:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6569:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6564:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6521:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6533:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6451:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6469:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6472:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6506:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6564:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6576:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5223,
                  "nodeType": "InlineAssembly",
                  "src": "6428:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6606:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6620:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6629:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6638:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6641:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "6634:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6634:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6625:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6625:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6620:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6657:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6670:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6675:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6666:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6666:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "6661:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6690:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "6702:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6713:2:43",
                                  "type": "",
                                  "value": "59"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "6717:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6709:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6709:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "6699:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6699:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "6690:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6733:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "6742:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6745:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6738:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6738:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6733:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6690:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6702:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6620:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6638:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6641:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6675:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6733:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6745:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5224,
                  "nodeType": "InlineAssembly",
                  "src": "6597:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6775:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6789:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6798:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6807:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6810:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "6803:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6803:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6794:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6794:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6789:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6826:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6839:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6844:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6835:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6835:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "6830:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6859:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "6871:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "6882:2:43",
                                  "type": "",
                                  "value": "58"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "6886:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "6878:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6878:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "6868:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6868:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "6859:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6902:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "6911:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "6914:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6907:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6907:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6902:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6859:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6871:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6789:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6807:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6810:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6844:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6902:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6914:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5225,
                  "nodeType": "InlineAssembly",
                  "src": "6766:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "6944:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6958:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6967:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6976:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6979:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "6972:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6972:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "6963:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6963:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "6958:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6995:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7008:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7013:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7004:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7004:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "6999:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7028:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "7040:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7051:2:43",
                                  "type": "",
                                  "value": "57"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "7055:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7047:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7047:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "7037:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7037:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "7028:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7071:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "7080:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7083:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7076:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7076:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7071:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7028:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7040:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6958:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6976:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "6979:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7013:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7071:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7083:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5226,
                  "nodeType": "InlineAssembly",
                  "src": "6935:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "7113:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7127:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7136:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7145:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7148:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "7141:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7141:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7132:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7132:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7127:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "7164:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7177:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7182:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7173:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7173:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "7168:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7197:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "7209:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7220:2:43",
                                  "type": "",
                                  "value": "56"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "7224:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7216:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7216:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "7206:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7206:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "7197:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7240:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "7249:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7252:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7245:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7245:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7240:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7197:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7209:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7127:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7145:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7148:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7182:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7240:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7252:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5227,
                  "nodeType": "InlineAssembly",
                  "src": "7104:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "7282:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7296:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7305:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7314:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7317:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "7310:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7310:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7301:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7301:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7296:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "7333:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7346:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7351:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7342:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7342:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "7337:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7366:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "7378:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7389:2:43",
                                  "type": "",
                                  "value": "55"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "7393:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7385:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7385:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "7375:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7375:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "7366:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7409:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "7418:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7421:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7414:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7414:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7409:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7366:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7378:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7296:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7314:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7317:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7351:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7409:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7421:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5228,
                  "nodeType": "InlineAssembly",
                  "src": "7273:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "7451:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7465:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7474:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7483:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7486:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "7479:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7479:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7470:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7470:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7465:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "7502:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7515:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7520:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7511:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7511:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "7506:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7535:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "7547:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7558:2:43",
                                  "type": "",
                                  "value": "54"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "7562:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7554:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7554:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "7544:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7544:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "7535:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7578:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "7587:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7590:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7583:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7583:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7578:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7535:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7547:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7465:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7483:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7486:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7520:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7578:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7590:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5229,
                  "nodeType": "InlineAssembly",
                  "src": "7442:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "7620:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7634:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7643:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7652:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7655:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "7648:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7648:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7639:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7639:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7634:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "7671:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7684:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7689:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7680:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7680:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "7675:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7704:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "7716:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7727:2:43",
                                  "type": "",
                                  "value": "53"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "7731:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7723:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7723:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "7713:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7713:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "7704:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7747:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "7756:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7759:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7752:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7752:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7747:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7704:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7716:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7634:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7652:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7655:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7689:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7747:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7759:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5230,
                  "nodeType": "InlineAssembly",
                  "src": "7611:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "7789:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7803:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7812:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7821:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7824:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "7817:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7817:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7808:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7808:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7803:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "7840:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7853:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7858:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7849:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7849:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "7844:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7873:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "7885:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7896:2:43",
                                  "type": "",
                                  "value": "52"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "7900:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7892:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7892:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "7882:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7882:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "7873:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7916:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "7925:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "7928:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7921:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7921:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7916:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7873:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7885:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7803:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7821:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7824:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7858:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7916:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7928:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5231,
                  "nodeType": "InlineAssembly",
                  "src": "7780:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "7958:151:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7972:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7981:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7990:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7993:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "7986:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7986:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "7977:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7977:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "7972:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "8009:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8022:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "8027:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "8018:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8018:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "8013:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "8042:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "8054:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "8065:2:43",
                                  "type": "",
                                  "value": "51"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "8069:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "8061:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8061:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "8051:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8051:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "8042:5:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "8085:14:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "f",
                              "nodeType": "YulIdentifier",
                              "src": "8094:1:43"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "8097:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "8090:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8090:9:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "8085:1:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8042:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8054:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7972:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7990:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "7993:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8027:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8085:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8097:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5232,
                  "nodeType": "InlineAssembly",
                  "src": "7949:160:43"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "8127:124:43",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "8141:24:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8150:3:43",
                              "type": "",
                              "value": "127"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "8159:1:43"
                                },
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "8162:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "mul",
                                "nodeType": "YulIdentifier",
                                "src": "8155:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8155:9:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "8146:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8146:19:43"
                        },
                        "variableNames": [
                          {
                            "name": "r",
                            "nodeType": "YulIdentifier",
                            "src": "8141:1:43"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "8178:20:43",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8191:3:43",
                              "type": "",
                              "value": "128"
                            },
                            {
                              "name": "r",
                              "nodeType": "YulIdentifier",
                              "src": "8196:1:43"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "8187:3:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8187:11:43"
                        },
                        "variables": [
                          {
                            "name": "f",
                            "nodeType": "YulTypedName",
                            "src": "8182:1:43",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "8211:30:43",
                        "value": {
                          "arguments": [
                            {
                              "name": "log_2",
                              "nodeType": "YulIdentifier",
                              "src": "8223:5:43"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "8234:2:43",
                                  "type": "",
                                  "value": "50"
                                },
                                {
                                  "name": "f",
                                  "nodeType": "YulIdentifier",
                                  "src": "8238:1:43"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "8230:3:43"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8230:10:43"
                            }
                          ],
                          "functionName": {
                            "name": "or",
                            "nodeType": "YulIdentifier",
                            "src": "8220:2:43"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8220:21:43"
                        },
                        "variableNames": [
                          {
                            "name": "log_2",
                            "nodeType": "YulIdentifier",
                            "src": "8211:5:43"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8211:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5209,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8223:5:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8141:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8159:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8162:1:43",
                      "valueSize": 1
                    },
                    {
                      "declaration": 5171,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "8196:1:43",
                      "valueSize": 1
                    }
                  ],
                  "id": 5233,
                  "nodeType": "InlineAssembly",
                  "src": "8118:133:43"
                },
                {
                  "assignments": [
                    5235
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5235,
                      "mutability": "mutable",
                      "name": "log_sqrt10001",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "8261:20:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 5234,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8261:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5239,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 5238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5236,
                      "name": "log_2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5209,
                      "src": "8284:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "323535373338393538393939363033383236333437313431",
                      "id": 5237,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8292:24:43",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255738958999603826347141_by_1",
                        "typeString": "int_const 255738958999603826347141"
                      },
                      "value": "255738958999603826347141"
                    },
                    "src": "8284:32:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8261:55:43"
                },
                {
                  "assignments": [
                    5241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5241,
                      "mutability": "mutable",
                      "name": "tickLow",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "8345:13:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 5240,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "8345:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5251,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 5249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 5246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5244,
                                "name": "log_sqrt10001",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5235,
                                "src": "8368:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "33343032393932393536383039313332343138353936313430313030363630323437323130",
                                "id": 5245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8384:37:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3402992956809132418596140100660247210_by_1",
                                  "typeString": "int_const 3402...(29 digits omitted)...7210"
                                },
                                "value": "3402992956809132418596140100660247210"
                              },
                              "src": "8368:53:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "id": 5247,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8367:55:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8426:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "8367:62:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 5243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8361:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int24_$",
                        "typeString": "type(int24)"
                      },
                      "typeName": {
                        "id": 5242,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "8361:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8361:69:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8345:85:43"
                },
                {
                  "assignments": [
                    5253
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5253,
                      "mutability": "mutable",
                      "name": "tickHi",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5280,
                      "src": "8440:12:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 5252,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "8440:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5263,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "id": 5261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 5258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5256,
                                "name": "log_sqrt10001",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5235,
                                "src": "8462:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "323931333339343634373731393839363232393037303237363231313533333938303838343935",
                                "id": 5257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8478:39:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_291339464771989622907027621153398088495_by_1",
                                  "typeString": "int_const 2913...(31 digits omitted)...8495"
                                },
                                "value": "291339464771989622907027621153398088495"
                              },
                              "src": "8462:55:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "id": 5259,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8461:57:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313238",
                          "id": 5260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8522:3:43",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "8461:64:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 5255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8455:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int24_$",
                        "typeString": "type(int24)"
                      },
                      "typeName": {
                        "id": 5254,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "8455:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8455:71:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8440:86:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5264,
                      "name": "tick",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5148,
                      "src": "8537:4:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "id": 5267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5265,
                          "name": "tickLow",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5241,
                          "src": "8544:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5266,
                          "name": "tickHi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5253,
                          "src": "8555:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "src": "8544:17:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          "id": 5273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5270,
                                "name": "tickHi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5253,
                                "src": "8593:6:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "id": 5269,
                              "name": "getSqrtRatioAtTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5142,
                              "src": "8574:18:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                "typeString": "function (int24) pure returns (uint160)"
                              }
                            },
                            "id": 5271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8574:26:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5272,
                            "name": "sqrtPriceX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5145,
                            "src": "8604:12:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "8574:42:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 5275,
                          "name": "tickLow",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5241,
                          "src": "8628:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 5276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "8574:61:43",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 5274,
                          "name": "tickHi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5253,
                          "src": "8619:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "id": 5277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "8544:91:43",
                      "trueExpression": {
                        "argumentTypes": null,
                        "id": 5268,
                        "name": "tickLow",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5241,
                        "src": "8564:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "8537:98:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "id": 5279,
                  "nodeType": "ExpressionStatement",
                  "src": "8537:98:43"
                }
              ]
            },
            "documentation": {
              "id": 5143,
              "nodeType": "StructuredDocumentation",
              "src": "3948:408:43",
              "text": "@notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n @return tick The greatest tick for which the ratio is less than or equal to the input ratio"
            },
            "id": 5281,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTickAtSqrtRatio",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5145,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5281,
                  "src": "4389:20:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 5144,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "4389:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4388:22:43"
            },
            "returnParameters": {
              "id": 5149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5148,
                  "mutability": "mutable",
                  "name": "tick",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5281,
                  "src": "4434:10:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 5147,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4434:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4433:12:43"
            },
            "scope": 5282,
            "src": "4361:4281:43",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 5283,
        "src": "313:8331:43"
      }
    ],
    "src": "45:8600:43"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/interfaces/uniswap/TickMath.sol",
      "exportedSymbols": {
        "TickMath": [
          5282
        ]
      },
      "license": "GPL-2.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            ">=",
            "0.5",
            ".0",
            "<",
            "0.8",
            ".0"
          ]
        },
        "id": 4753,
        "name": "PragmaDirective",
        "src": "45:31:43"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            5282
          ],
          "name": "TickMath",
          "scope": 5283
        },
        "children": [
          {
            "attributes": {
              "text": "@title Math library for computing sqrt prices from ticks and vice versa\n @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n prices between 2**-128 and 2**128"
            },
            "id": 4754,
            "name": "StructuredDocumentation",
            "src": "78:235:43"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "MIN_TICK",
              "overrides": null,
              "scope": 5282,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "int24",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "int24",
                  "type": "int24"
                },
                "id": 4755,
                "name": "ElementaryTypeName",
                "src": "449:5:43"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "operator": "-",
                  "prefix": true,
                  "type": "int_const -887272"
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "383837323732",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 887272",
                      "value": "887272"
                    },
                    "id": 4756,
                    "name": "Literal",
                    "src": "485:6:43"
                  }
                ],
                "id": 4757,
                "name": "UnaryOperation",
                "src": "484:7:43"
              }
            ],
            "id": 4758,
            "name": "VariableDeclaration",
            "src": "449:42:43"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "MAX_TICK",
              "overrides": null,
              "scope": 5282,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "int24",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "int24",
                  "type": "int24"
                },
                "id": 4759,
                "name": "ElementaryTypeName",
                "src": "609:5:43"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "operator": "-",
                  "prefix": true,
                  "type": "int24"
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4758,
                      "type": "int24",
                      "value": "MIN_TICK"
                    },
                    "id": 4760,
                    "name": "Identifier",
                    "src": "645:8:43"
                  }
                ],
                "id": 4761,
                "name": "UnaryOperation",
                "src": "644:9:43"
              }
            ],
            "id": 4762,
            "name": "VariableDeclaration",
            "src": "609:44:43"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "MIN_SQRT_RATIO",
              "overrides": null,
              "scope": 5282,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint160",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint160",
                  "type": "uint160"
                },
                "id": 4763,
                "name": "ElementaryTypeName",
                "src": "781:7:43"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "34323935313238373339",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 4295128739",
                  "value": "4295128739"
                },
                "id": 4764,
                "name": "Literal",
                "src": "824:10:43"
              }
            ],
            "id": 4765,
            "name": "VariableDeclaration",
            "src": "781:53:43"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "MAX_SQRT_RATIO",
              "overrides": null,
              "scope": 5282,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint160",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint160",
                  "type": "uint160"
                },
                "id": 4766,
                "name": "ElementaryTypeName",
                "src": "961:7:43"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 1461...(41 digits omitted)...0342",
                  "value": "1461446703485210103287273052203988822378723970342"
                },
                "id": 4767,
                "name": "Literal",
                "src": "1004:49:43"
              }
            ],
            "id": 4768,
            "name": "VariableDeclaration",
            "src": "961:92:43"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getSqrtRatioAtTick",
              "overrides": null,
              "scope": 5282,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Calculates sqrt(1.0001^tick) * 2^96\n @dev Throws if |tick| > max tick\n @param tick The input tick for the above formula\n @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n at the given tick"
                },
                "id": 4769,
                "name": "StructuredDocumentation",
                "src": "1060:297:43"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tick",
                      "overrides": null,
                      "scope": 5142,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 4770,
                        "name": "ElementaryTypeName",
                        "src": "1390:5:43"
                      }
                    ],
                    "id": 4771,
                    "name": "VariableDeclaration",
                    "src": "1390:10:43"
                  }
                ],
                "id": 4772,
                "name": "ParameterList",
                "src": "1389:12:43"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sqrtPriceX96",
                      "overrides": null,
                      "scope": 5142,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 4773,
                        "name": "ElementaryTypeName",
                        "src": "1425:7:43"
                      }
                    ],
                    "id": 4774,
                    "name": "VariableDeclaration",
                    "src": "1425:20:43"
                  }
                ],
                "id": 4775,
                "name": "ParameterList",
                "src": "1424:22:43"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4777
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "absTick",
                          "overrides": null,
                          "scope": 5141,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4776,
                            "name": "ElementaryTypeName",
                            "src": "1457:7:43"
                          }
                        ],
                        "id": 4777,
                        "name": "VariableDeclaration",
                        "src": "1457:15:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4771,
                                  "type": "int24",
                                  "value": "tick"
                                },
                                "id": 4778,
                                "name": "Identifier",
                                "src": "1475:4:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4779,
                                "name": "Literal",
                                "src": "1482:1:43"
                              }
                            ],
                            "id": 4780,
                            "name": "BinaryOperation",
                            "src": "1475:8:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": null
                                    },
                                    "id": 4781,
                                    "name": "ElementaryTypeName",
                                    "src": "1486:7:43"
                                  }
                                ],
                                "id": 4782,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1486:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "int256",
                                              "type": null
                                            },
                                            "id": 4783,
                                            "name": "ElementaryTypeName",
                                            "src": "1495:6:43"
                                          }
                                        ],
                                        "id": 4784,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1495:6:43"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4771,
                                          "type": "int24",
                                          "value": "tick"
                                        },
                                        "id": 4785,
                                        "name": "Identifier",
                                        "src": "1502:4:43"
                                      }
                                    ],
                                    "id": 4786,
                                    "name": "FunctionCall",
                                    "src": "1495:12:43"
                                  }
                                ],
                                "id": 4787,
                                "name": "UnaryOperation",
                                "src": "1494:13:43"
                              }
                            ],
                            "id": 4788,
                            "name": "FunctionCall",
                            "src": "1486:22:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": null
                                    },
                                    "id": 4789,
                                    "name": "ElementaryTypeName",
                                    "src": "1511:7:43"
                                  }
                                ],
                                "id": 4790,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1511:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "int256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(int256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "int256",
                                          "type": null
                                        },
                                        "id": 4791,
                                        "name": "ElementaryTypeName",
                                        "src": "1519:6:43"
                                      }
                                    ],
                                    "id": 4792,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1519:6:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4771,
                                      "type": "int24",
                                      "value": "tick"
                                    },
                                    "id": 4793,
                                    "name": "Identifier",
                                    "src": "1526:4:43"
                                  }
                                ],
                                "id": 4794,
                                "name": "FunctionCall",
                                "src": "1519:12:43"
                              }
                            ],
                            "id": 4795,
                            "name": "FunctionCall",
                            "src": "1511:21:43"
                          }
                        ],
                        "id": 4796,
                        "name": "Conditional",
                        "src": "1475:57:43"
                      }
                    ],
                    "id": 4797,
                    "name": "VariableDeclarationStatement",
                    "src": "1457:75:43"
                  },
                  {
                    "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_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc",
                                  "typeString": "literal_string \"T\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 4798,
                            "name": "Identifier",
                            "src": "1542:7:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4799,
                                "name": "Identifier",
                                "src": "1550:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 4800,
                                        "name": "ElementaryTypeName",
                                        "src": "1561:7:43"
                                      }
                                    ],
                                    "id": 4801,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1561:7:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4762,
                                      "type": "int24",
                                      "value": "MAX_TICK"
                                    },
                                    "id": 4802,
                                    "name": "Identifier",
                                    "src": "1569:8:43"
                                  }
                                ],
                                "id": 4803,
                                "name": "FunctionCall",
                                "src": "1561:17:43"
                              }
                            ],
                            "id": 4804,
                            "name": "BinaryOperation",
                            "src": "1550:28:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "54",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"T\"",
                              "value": "T"
                            },
                            "id": 4805,
                            "name": "Literal",
                            "src": "1580:3:43"
                          }
                        ],
                        "id": 4806,
                        "name": "FunctionCall",
                        "src": "1542:42:43"
                      }
                    ],
                    "id": 4807,
                    "name": "ExpressionStatement",
                    "src": "1542:42:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4809
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "ratio",
                          "overrides": null,
                          "scope": 5141,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4808,
                            "name": "ElementaryTypeName",
                            "src": "1595:7:43"
                          }
                        ],
                        "id": 4809,
                        "name": "VariableDeclaration",
                        "src": "1595:13:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint136"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4777,
                                      "type": "uint256",
                                      "value": "absTick"
                                    },
                                    "id": 4810,
                                    "name": "Identifier",
                                    "src": "1611:7:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "307831",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "0x1"
                                    },
                                    "id": 4811,
                                    "name": "Literal",
                                    "src": "1621:3:43"
                                  }
                                ],
                                "id": 4812,
                                "name": "BinaryOperation",
                                "src": "1611:13:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4813,
                                "name": "Literal",
                                "src": "1628:1:43"
                              }
                            ],
                            "id": 4814,
                            "name": "BinaryOperation",
                            "src": "1611:18:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30786666666362393333626436666164333761613264313632643161353934303031",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3402...(31 digits omitted)...9313",
                              "value": "0xfffcb933bd6fad37aa2d162d1a594001"
                            },
                            "id": 4815,
                            "name": "Literal",
                            "src": "1632:34:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3402...(31 digits omitted)...1456",
                              "value": "0x100000000000000000000000000000000"
                            },
                            "id": 4816,
                            "name": "Literal",
                            "src": "1669:35:43"
                          }
                        ],
                        "id": 4817,
                        "name": "Conditional",
                        "src": "1611:93:43"
                      }
                    ],
                    "id": 4818,
                    "name": "VariableDeclarationStatement",
                    "src": "1595:109:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4819,
                                "name": "Identifier",
                                "src": "1718:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307832",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "0x2"
                                },
                                "id": 4820,
                                "name": "Literal",
                                "src": "1728:3:43"
                              }
                            ],
                            "id": 4821,
                            "name": "BinaryOperation",
                            "src": "1718:13:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4822,
                            "name": "Literal",
                            "src": "1735:1:43"
                          }
                        ],
                        "id": 4823,
                        "name": "BinaryOperation",
                        "src": "1718:18:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4824,
                                "name": "Identifier",
                                "src": "1738:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4825,
                                            "name": "Identifier",
                                            "src": "1747:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786666663937323732333733643431333235396134363939303538306532313361",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3402...(31 digits omitted)...2778",
                                              "value": "0xfff97272373d413259a46990580e213a"
                                            },
                                            "id": 4826,
                                            "name": "Literal",
                                            "src": "1755:34:43"
                                          }
                                        ],
                                        "id": 4827,
                                        "name": "BinaryOperation",
                                        "src": "1747:42:43"
                                      }
                                    ],
                                    "id": 4828,
                                    "name": "TupleExpression",
                                    "src": "1746:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4829,
                                    "name": "Literal",
                                    "src": "1794:3:43"
                                  }
                                ],
                                "id": 4830,
                                "name": "BinaryOperation",
                                "src": "1746:51:43"
                              }
                            ],
                            "id": 4831,
                            "name": "Assignment",
                            "src": "1738:59:43"
                          }
                        ],
                        "id": 4832,
                        "name": "ExpressionStatement",
                        "src": "1738:59:43"
                      }
                    ],
                    "id": 4833,
                    "name": "IfStatement",
                    "src": "1714:83:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4834,
                                "name": "Identifier",
                                "src": "1811:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307834",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 4",
                                  "value": "0x4"
                                },
                                "id": 4835,
                                "name": "Literal",
                                "src": "1821:3:43"
                              }
                            ],
                            "id": 4836,
                            "name": "BinaryOperation",
                            "src": "1811:13:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4837,
                            "name": "Literal",
                            "src": "1828:1:43"
                          }
                        ],
                        "id": 4838,
                        "name": "BinaryOperation",
                        "src": "1811:18:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4839,
                                "name": "Identifier",
                                "src": "1831:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4840,
                                            "name": "Identifier",
                                            "src": "1840:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786666663265353066356636353639333265663132333537636633633766646363",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3402...(31 digits omitted)...1260",
                                              "value": "0xfff2e50f5f656932ef12357cf3c7fdcc"
                                            },
                                            "id": 4841,
                                            "name": "Literal",
                                            "src": "1848:34:43"
                                          }
                                        ],
                                        "id": 4842,
                                        "name": "BinaryOperation",
                                        "src": "1840:42:43"
                                      }
                                    ],
                                    "id": 4843,
                                    "name": "TupleExpression",
                                    "src": "1839:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4844,
                                    "name": "Literal",
                                    "src": "1887:3:43"
                                  }
                                ],
                                "id": 4845,
                                "name": "BinaryOperation",
                                "src": "1839:51:43"
                              }
                            ],
                            "id": 4846,
                            "name": "Assignment",
                            "src": "1831:59:43"
                          }
                        ],
                        "id": 4847,
                        "name": "ExpressionStatement",
                        "src": "1831:59:43"
                      }
                    ],
                    "id": 4848,
                    "name": "IfStatement",
                    "src": "1807:83:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4849,
                                "name": "Identifier",
                                "src": "1904:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307838",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "0x8"
                                },
                                "id": 4850,
                                "name": "Literal",
                                "src": "1914:3:43"
                              }
                            ],
                            "id": 4851,
                            "name": "BinaryOperation",
                            "src": "1904:13:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4852,
                            "name": "Literal",
                            "src": "1921:1:43"
                          }
                        ],
                        "id": 4853,
                        "name": "BinaryOperation",
                        "src": "1904:18:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4854,
                                "name": "Identifier",
                                "src": "1924:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4855,
                                            "name": "Identifier",
                                            "src": "1933:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786666653563616361376531306534653631633336323465616130393431636430",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3401...(31 digits omitted)...4304",
                                              "value": "0xffe5caca7e10e4e61c3624eaa0941cd0"
                                            },
                                            "id": 4856,
                                            "name": "Literal",
                                            "src": "1941:34:43"
                                          }
                                        ],
                                        "id": 4857,
                                        "name": "BinaryOperation",
                                        "src": "1933:42:43"
                                      }
                                    ],
                                    "id": 4858,
                                    "name": "TupleExpression",
                                    "src": "1932:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4859,
                                    "name": "Literal",
                                    "src": "1980:3:43"
                                  }
                                ],
                                "id": 4860,
                                "name": "BinaryOperation",
                                "src": "1932:51:43"
                              }
                            ],
                            "id": 4861,
                            "name": "Assignment",
                            "src": "1924:59:43"
                          }
                        ],
                        "id": 4862,
                        "name": "ExpressionStatement",
                        "src": "1924:59:43"
                      }
                    ],
                    "id": 4863,
                    "name": "IfStatement",
                    "src": "1900:83:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4864,
                                "name": "Identifier",
                                "src": "1997:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783130",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 16",
                                  "value": "0x10"
                                },
                                "id": 4865,
                                "name": "Literal",
                                "src": "2007:4:43"
                              }
                            ],
                            "id": 4866,
                            "name": "BinaryOperation",
                            "src": "1997:14:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4867,
                            "name": "Literal",
                            "src": "2015:1:43"
                          }
                        ],
                        "id": 4868,
                        "name": "BinaryOperation",
                        "src": "1997:19:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4869,
                                "name": "Identifier",
                                "src": "2018:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4870,
                                            "name": "Identifier",
                                            "src": "2027:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786666636239383433643630663631353963396462353838333563393236363434",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3400...(31 digits omitted)...1444",
                                              "value": "0xffcb9843d60f6159c9db58835c926644"
                                            },
                                            "id": 4871,
                                            "name": "Literal",
                                            "src": "2035:34:43"
                                          }
                                        ],
                                        "id": 4872,
                                        "name": "BinaryOperation",
                                        "src": "2027:42:43"
                                      }
                                    ],
                                    "id": 4873,
                                    "name": "TupleExpression",
                                    "src": "2026:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4874,
                                    "name": "Literal",
                                    "src": "2074:3:43"
                                  }
                                ],
                                "id": 4875,
                                "name": "BinaryOperation",
                                "src": "2026:51:43"
                              }
                            ],
                            "id": 4876,
                            "name": "Assignment",
                            "src": "2018:59:43"
                          }
                        ],
                        "id": 4877,
                        "name": "ExpressionStatement",
                        "src": "2018:59:43"
                      }
                    ],
                    "id": 4878,
                    "name": "IfStatement",
                    "src": "1993:84:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4879,
                                "name": "Identifier",
                                "src": "2091:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783230",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "0x20"
                                },
                                "id": 4880,
                                "name": "Literal",
                                "src": "2101:4:43"
                              }
                            ],
                            "id": 4881,
                            "name": "BinaryOperation",
                            "src": "2091:14:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4882,
                            "name": "Literal",
                            "src": "2109:1:43"
                          }
                        ],
                        "id": 4883,
                        "name": "BinaryOperation",
                        "src": "2091:19:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4884,
                                "name": "Identifier",
                                "src": "2112:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4885,
                                            "name": "Identifier",
                                            "src": "2121:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786666393733623431666139386330383134373265363839366466623235346330",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3397...(31 digits omitted)...2016",
                                              "value": "0xff973b41fa98c081472e6896dfb254c0"
                                            },
                                            "id": 4886,
                                            "name": "Literal",
                                            "src": "2129:34:43"
                                          }
                                        ],
                                        "id": 4887,
                                        "name": "BinaryOperation",
                                        "src": "2121:42:43"
                                      }
                                    ],
                                    "id": 4888,
                                    "name": "TupleExpression",
                                    "src": "2120:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4889,
                                    "name": "Literal",
                                    "src": "2168:3:43"
                                  }
                                ],
                                "id": 4890,
                                "name": "BinaryOperation",
                                "src": "2120:51:43"
                              }
                            ],
                            "id": 4891,
                            "name": "Assignment",
                            "src": "2112:59:43"
                          }
                        ],
                        "id": 4892,
                        "name": "ExpressionStatement",
                        "src": "2112:59:43"
                      }
                    ],
                    "id": 4893,
                    "name": "IfStatement",
                    "src": "2087:84:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4894,
                                "name": "Identifier",
                                "src": "2185:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783430",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 64",
                                  "value": "0x40"
                                },
                                "id": 4895,
                                "name": "Literal",
                                "src": "2195:4:43"
                              }
                            ],
                            "id": 4896,
                            "name": "BinaryOperation",
                            "src": "2185:14:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4897,
                            "name": "Literal",
                            "src": "2203:1:43"
                          }
                        ],
                        "id": 4898,
                        "name": "BinaryOperation",
                        "src": "2185:19:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4899,
                                "name": "Identifier",
                                "src": "2206:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4900,
                                            "name": "Identifier",
                                            "src": "2215:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786666326561313634363663393661333834336563373862333236623532383631",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3391...(31 digits omitted)...7025",
                                              "value": "0xff2ea16466c96a3843ec78b326b52861"
                                            },
                                            "id": 4901,
                                            "name": "Literal",
                                            "src": "2223:34:43"
                                          }
                                        ],
                                        "id": 4902,
                                        "name": "BinaryOperation",
                                        "src": "2215:42:43"
                                      }
                                    ],
                                    "id": 4903,
                                    "name": "TupleExpression",
                                    "src": "2214:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4904,
                                    "name": "Literal",
                                    "src": "2262:3:43"
                                  }
                                ],
                                "id": 4905,
                                "name": "BinaryOperation",
                                "src": "2214:51:43"
                              }
                            ],
                            "id": 4906,
                            "name": "Assignment",
                            "src": "2206:59:43"
                          }
                        ],
                        "id": 4907,
                        "name": "ExpressionStatement",
                        "src": "2206:59:43"
                      }
                    ],
                    "id": 4908,
                    "name": "IfStatement",
                    "src": "2181:84:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4909,
                                "name": "Identifier",
                                "src": "2279:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783830",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 128",
                                  "value": "0x80"
                                },
                                "id": 4910,
                                "name": "Literal",
                                "src": "2289:4:43"
                              }
                            ],
                            "id": 4911,
                            "name": "BinaryOperation",
                            "src": "2279:14:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4912,
                            "name": "Literal",
                            "src": "2297:1:43"
                          }
                        ],
                        "id": 4913,
                        "name": "BinaryOperation",
                        "src": "2279:19:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4914,
                                "name": "Identifier",
                                "src": "2300:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4915,
                                            "name": "Identifier",
                                            "src": "2309:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786665356465653034366139396132613831316334363166313936396333303533",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3381...(31 digits omitted)...5971",
                                              "value": "0xfe5dee046a99a2a811c461f1969c3053"
                                            },
                                            "id": 4916,
                                            "name": "Literal",
                                            "src": "2317:34:43"
                                          }
                                        ],
                                        "id": 4917,
                                        "name": "BinaryOperation",
                                        "src": "2309:42:43"
                                      }
                                    ],
                                    "id": 4918,
                                    "name": "TupleExpression",
                                    "src": "2308:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4919,
                                    "name": "Literal",
                                    "src": "2356:3:43"
                                  }
                                ],
                                "id": 4920,
                                "name": "BinaryOperation",
                                "src": "2308:51:43"
                              }
                            ],
                            "id": 4921,
                            "name": "Assignment",
                            "src": "2300:59:43"
                          }
                        ],
                        "id": 4922,
                        "name": "ExpressionStatement",
                        "src": "2300:59:43"
                      }
                    ],
                    "id": 4923,
                    "name": "IfStatement",
                    "src": "2275:84:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4924,
                                "name": "Identifier",
                                "src": "2373:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3078313030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 256",
                                  "value": "0x100"
                                },
                                "id": 4925,
                                "name": "Literal",
                                "src": "2383:5:43"
                              }
                            ],
                            "id": 4926,
                            "name": "BinaryOperation",
                            "src": "2373:15:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4927,
                            "name": "Literal",
                            "src": "2392:1:43"
                          }
                        ],
                        "id": 4928,
                        "name": "BinaryOperation",
                        "src": "2373:20:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4929,
                                "name": "Identifier",
                                "src": "2395:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4930,
                                            "name": "Identifier",
                                            "src": "2404:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786663626538366337393030613838616564636666633833623437396161336134",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3359...(31 digits omitted)...7700",
                                              "value": "0xfcbe86c7900a88aedcffc83b479aa3a4"
                                            },
                                            "id": 4931,
                                            "name": "Literal",
                                            "src": "2412:34:43"
                                          }
                                        ],
                                        "id": 4932,
                                        "name": "BinaryOperation",
                                        "src": "2404:42:43"
                                      }
                                    ],
                                    "id": 4933,
                                    "name": "TupleExpression",
                                    "src": "2403:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4934,
                                    "name": "Literal",
                                    "src": "2451:3:43"
                                  }
                                ],
                                "id": 4935,
                                "name": "BinaryOperation",
                                "src": "2403:51:43"
                              }
                            ],
                            "id": 4936,
                            "name": "Assignment",
                            "src": "2395:59:43"
                          }
                        ],
                        "id": 4937,
                        "name": "ExpressionStatement",
                        "src": "2395:59:43"
                      }
                    ],
                    "id": 4938,
                    "name": "IfStatement",
                    "src": "2369:85:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4939,
                                "name": "Identifier",
                                "src": "2468:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3078323030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 512",
                                  "value": "0x200"
                                },
                                "id": 4940,
                                "name": "Literal",
                                "src": "2478:5:43"
                              }
                            ],
                            "id": 4941,
                            "name": "BinaryOperation",
                            "src": "2468:15:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4942,
                            "name": "Literal",
                            "src": "2487:1:43"
                          }
                        ],
                        "id": 4943,
                        "name": "BinaryOperation",
                        "src": "2468:20:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4944,
                                "name": "Identifier",
                                "src": "2490:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4945,
                                            "name": "Identifier",
                                            "src": "2499:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786639383761373235336163343133313736663262303734636637383135653534",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3316...(31 digits omitted)...7300",
                                              "value": "0xf987a7253ac413176f2b074cf7815e54"
                                            },
                                            "id": 4946,
                                            "name": "Literal",
                                            "src": "2507:34:43"
                                          }
                                        ],
                                        "id": 4947,
                                        "name": "BinaryOperation",
                                        "src": "2499:42:43"
                                      }
                                    ],
                                    "id": 4948,
                                    "name": "TupleExpression",
                                    "src": "2498:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4949,
                                    "name": "Literal",
                                    "src": "2546:3:43"
                                  }
                                ],
                                "id": 4950,
                                "name": "BinaryOperation",
                                "src": "2498:51:43"
                              }
                            ],
                            "id": 4951,
                            "name": "Assignment",
                            "src": "2490:59:43"
                          }
                        ],
                        "id": 4952,
                        "name": "ExpressionStatement",
                        "src": "2490:59:43"
                      }
                    ],
                    "id": 4953,
                    "name": "IfStatement",
                    "src": "2464:85:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4954,
                                "name": "Identifier",
                                "src": "2563:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3078343030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1024",
                                  "value": "0x400"
                                },
                                "id": 4955,
                                "name": "Literal",
                                "src": "2573:5:43"
                              }
                            ],
                            "id": 4956,
                            "name": "BinaryOperation",
                            "src": "2563:15:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4957,
                            "name": "Literal",
                            "src": "2582:1:43"
                          }
                        ],
                        "id": 4958,
                        "name": "BinaryOperation",
                        "src": "2563:20:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4959,
                                "name": "Identifier",
                                "src": "2585:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4960,
                                            "name": "Identifier",
                                            "src": "2594:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786633333932623038323262373030303539343063376133393865346237306633",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3232...(31 digits omitted)...8739",
                                              "value": "0xf3392b0822b70005940c7a398e4b70f3"
                                            },
                                            "id": 4961,
                                            "name": "Literal",
                                            "src": "2602:34:43"
                                          }
                                        ],
                                        "id": 4962,
                                        "name": "BinaryOperation",
                                        "src": "2594:42:43"
                                      }
                                    ],
                                    "id": 4963,
                                    "name": "TupleExpression",
                                    "src": "2593:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4964,
                                    "name": "Literal",
                                    "src": "2641:3:43"
                                  }
                                ],
                                "id": 4965,
                                "name": "BinaryOperation",
                                "src": "2593:51:43"
                              }
                            ],
                            "id": 4966,
                            "name": "Assignment",
                            "src": "2585:59:43"
                          }
                        ],
                        "id": 4967,
                        "name": "ExpressionStatement",
                        "src": "2585:59:43"
                      }
                    ],
                    "id": 4968,
                    "name": "IfStatement",
                    "src": "2559:85:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4969,
                                "name": "Identifier",
                                "src": "2658:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3078383030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2048",
                                  "value": "0x800"
                                },
                                "id": 4970,
                                "name": "Literal",
                                "src": "2668:5:43"
                              }
                            ],
                            "id": 4971,
                            "name": "BinaryOperation",
                            "src": "2658:15:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4972,
                            "name": "Literal",
                            "src": "2677:1:43"
                          }
                        ],
                        "id": 4973,
                        "name": "BinaryOperation",
                        "src": "2658:20:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4974,
                                "name": "Identifier",
                                "src": "2680:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4975,
                                            "name": "Identifier",
                                            "src": "2689:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786537313539343735613263323962373434336232396337666136653838396439",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 3071...(31 digits omitted)...3929",
                                              "value": "0xe7159475a2c29b7443b29c7fa6e889d9"
                                            },
                                            "id": 4976,
                                            "name": "Literal",
                                            "src": "2697:34:43"
                                          }
                                        ],
                                        "id": 4977,
                                        "name": "BinaryOperation",
                                        "src": "2689:42:43"
                                      }
                                    ],
                                    "id": 4978,
                                    "name": "TupleExpression",
                                    "src": "2688:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4979,
                                    "name": "Literal",
                                    "src": "2736:3:43"
                                  }
                                ],
                                "id": 4980,
                                "name": "BinaryOperation",
                                "src": "2688:51:43"
                              }
                            ],
                            "id": 4981,
                            "name": "Assignment",
                            "src": "2680:59:43"
                          }
                        ],
                        "id": 4982,
                        "name": "ExpressionStatement",
                        "src": "2680:59:43"
                      }
                    ],
                    "id": 4983,
                    "name": "IfStatement",
                    "src": "2654:85:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4984,
                                "name": "Identifier",
                                "src": "2753:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307831303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 4096",
                                  "value": "0x1000"
                                },
                                "id": 4985,
                                "name": "Literal",
                                "src": "2763:6:43"
                              }
                            ],
                            "id": 4986,
                            "name": "BinaryOperation",
                            "src": "2753:16:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4987,
                            "name": "Literal",
                            "src": "2773:1:43"
                          }
                        ],
                        "id": 4988,
                        "name": "BinaryOperation",
                        "src": "2753:21:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 4989,
                                "name": "Identifier",
                                "src": "2776:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 4990,
                                            "name": "Identifier",
                                            "src": "2785:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786430393766336264666432303232623838343561643866373932616135383235",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 2772...(31 digits omitted)...5045",
                                              "value": "0xd097f3bdfd2022b8845ad8f792aa5825"
                                            },
                                            "id": 4991,
                                            "name": "Literal",
                                            "src": "2793:34:43"
                                          }
                                        ],
                                        "id": 4992,
                                        "name": "BinaryOperation",
                                        "src": "2785:42:43"
                                      }
                                    ],
                                    "id": 4993,
                                    "name": "TupleExpression",
                                    "src": "2784:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 4994,
                                    "name": "Literal",
                                    "src": "2832:3:43"
                                  }
                                ],
                                "id": 4995,
                                "name": "BinaryOperation",
                                "src": "2784:51:43"
                              }
                            ],
                            "id": 4996,
                            "name": "Assignment",
                            "src": "2776:59:43"
                          }
                        ],
                        "id": 4997,
                        "name": "ExpressionStatement",
                        "src": "2776:59:43"
                      }
                    ],
                    "id": 4998,
                    "name": "IfStatement",
                    "src": "2749:86:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 4999,
                                "name": "Identifier",
                                "src": "2849:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307832303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 8192",
                                  "value": "0x2000"
                                },
                                "id": 5000,
                                "name": "Literal",
                                "src": "2859:6:43"
                              }
                            ],
                            "id": 5001,
                            "name": "BinaryOperation",
                            "src": "2849:16:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5002,
                            "name": "Literal",
                            "src": "2869:1:43"
                          }
                        ],
                        "id": 5003,
                        "name": "BinaryOperation",
                        "src": "2849:21:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5004,
                                "name": "Identifier",
                                "src": "2872:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5005,
                                            "name": "Identifier",
                                            "src": "2881:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30786139663734363436326438373066646638613635646331663930653036316535",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 2259...(31 digits omitted)...1333",
                                              "value": "0xa9f746462d870fdf8a65dc1f90e061e5"
                                            },
                                            "id": 5006,
                                            "name": "Literal",
                                            "src": "2889:34:43"
                                          }
                                        ],
                                        "id": 5007,
                                        "name": "BinaryOperation",
                                        "src": "2881:42:43"
                                      }
                                    ],
                                    "id": 5008,
                                    "name": "TupleExpression",
                                    "src": "2880:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5009,
                                    "name": "Literal",
                                    "src": "2928:3:43"
                                  }
                                ],
                                "id": 5010,
                                "name": "BinaryOperation",
                                "src": "2880:51:43"
                              }
                            ],
                            "id": 5011,
                            "name": "Assignment",
                            "src": "2872:59:43"
                          }
                        ],
                        "id": 5012,
                        "name": "ExpressionStatement",
                        "src": "2872:59:43"
                      }
                    ],
                    "id": 5013,
                    "name": "IfStatement",
                    "src": "2845:86:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 5014,
                                "name": "Identifier",
                                "src": "2945:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307834303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 16384",
                                  "value": "0x4000"
                                },
                                "id": 5015,
                                "name": "Literal",
                                "src": "2955:6:43"
                              }
                            ],
                            "id": 5016,
                            "name": "BinaryOperation",
                            "src": "2945:16:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5017,
                            "name": "Literal",
                            "src": "2965:1:43"
                          }
                        ],
                        "id": 5018,
                        "name": "BinaryOperation",
                        "src": "2945:21:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5019,
                                "name": "Identifier",
                                "src": "2968:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5020,
                                            "name": "Identifier",
                                            "src": "2977:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30783730643836396131353664326131623839306262336466363262616633326637",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1499...(31 digits omitted)...5943",
                                              "value": "0x70d869a156d2a1b890bb3df62baf32f7"
                                            },
                                            "id": 5021,
                                            "name": "Literal",
                                            "src": "2985:34:43"
                                          }
                                        ],
                                        "id": 5022,
                                        "name": "BinaryOperation",
                                        "src": "2977:42:43"
                                      }
                                    ],
                                    "id": 5023,
                                    "name": "TupleExpression",
                                    "src": "2976:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5024,
                                    "name": "Literal",
                                    "src": "3024:3:43"
                                  }
                                ],
                                "id": 5025,
                                "name": "BinaryOperation",
                                "src": "2976:51:43"
                              }
                            ],
                            "id": 5026,
                            "name": "Assignment",
                            "src": "2968:59:43"
                          }
                        ],
                        "id": 5027,
                        "name": "ExpressionStatement",
                        "src": "2968:59:43"
                      }
                    ],
                    "id": 5028,
                    "name": "IfStatement",
                    "src": "2941:86:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 5029,
                                "name": "Identifier",
                                "src": "3041:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307838303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32768",
                                  "value": "0x8000"
                                },
                                "id": 5030,
                                "name": "Literal",
                                "src": "3051:6:43"
                              }
                            ],
                            "id": 5031,
                            "name": "BinaryOperation",
                            "src": "3041:16:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5032,
                            "name": "Literal",
                            "src": "3061:1:43"
                          }
                        ],
                        "id": 5033,
                        "name": "BinaryOperation",
                        "src": "3041:21:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5034,
                                "name": "Identifier",
                                "src": "3064:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5035,
                                            "name": "Identifier",
                                            "src": "3073:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30783331626531333566393764303866643938313233313530353534326663666136",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 6611...(30 digits omitted)...7926",
                                              "value": "0x31be135f97d08fd981231505542fcfa6"
                                            },
                                            "id": 5036,
                                            "name": "Literal",
                                            "src": "3081:34:43"
                                          }
                                        ],
                                        "id": 5037,
                                        "name": "BinaryOperation",
                                        "src": "3073:42:43"
                                      }
                                    ],
                                    "id": 5038,
                                    "name": "TupleExpression",
                                    "src": "3072:44:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5039,
                                    "name": "Literal",
                                    "src": "3120:3:43"
                                  }
                                ],
                                "id": 5040,
                                "name": "BinaryOperation",
                                "src": "3072:51:43"
                              }
                            ],
                            "id": 5041,
                            "name": "Assignment",
                            "src": "3064:59:43"
                          }
                        ],
                        "id": 5042,
                        "name": "ExpressionStatement",
                        "src": "3064:59:43"
                      }
                    ],
                    "id": 5043,
                    "name": "IfStatement",
                    "src": "3037:86:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 5044,
                                "name": "Identifier",
                                "src": "3137:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783130303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 65536",
                                  "value": "0x10000"
                                },
                                "id": 5045,
                                "name": "Literal",
                                "src": "3147:7:43"
                              }
                            ],
                            "id": 5046,
                            "name": "BinaryOperation",
                            "src": "3137:17:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5047,
                            "name": "Literal",
                            "src": "3158:1:43"
                          }
                        ],
                        "id": 5048,
                        "name": "BinaryOperation",
                        "src": "3137:22:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5049,
                                "name": "Identifier",
                                "src": "3161:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5050,
                                            "name": "Identifier",
                                            "src": "3170:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "307839616135303862356237613834653163363737646535346633653939626339",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1284...(30 digits omitted)...8313",
                                              "value": "0x9aa508b5b7a84e1c677de54f3e99bc9"
                                            },
                                            "id": 5051,
                                            "name": "Literal",
                                            "src": "3178:33:43"
                                          }
                                        ],
                                        "id": 5052,
                                        "name": "BinaryOperation",
                                        "src": "3170:41:43"
                                      }
                                    ],
                                    "id": 5053,
                                    "name": "TupleExpression",
                                    "src": "3169:43:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5054,
                                    "name": "Literal",
                                    "src": "3216:3:43"
                                  }
                                ],
                                "id": 5055,
                                "name": "BinaryOperation",
                                "src": "3169:50:43"
                              }
                            ],
                            "id": 5056,
                            "name": "Assignment",
                            "src": "3161:58:43"
                          }
                        ],
                        "id": 5057,
                        "name": "ExpressionStatement",
                        "src": "3161:58:43"
                      }
                    ],
                    "id": 5058,
                    "name": "IfStatement",
                    "src": "3133:86:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 5059,
                                "name": "Identifier",
                                "src": "3233:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783230303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 131072",
                                  "value": "0x20000"
                                },
                                "id": 5060,
                                "name": "Literal",
                                "src": "3243:7:43"
                              }
                            ],
                            "id": 5061,
                            "name": "BinaryOperation",
                            "src": "3233:17:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5062,
                            "name": "Literal",
                            "src": "3254:1:43"
                          }
                        ],
                        "id": 5063,
                        "name": "BinaryOperation",
                        "src": "3233:22:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5064,
                                "name": "Identifier",
                                "src": "3257:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5065,
                                            "name": "Identifier",
                                            "src": "3266:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "3078356436616638646564623831313936363939633332393232356565363034",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 4850...(28 digits omitted)...4020",
                                              "value": "0x5d6af8dedb81196699c329225ee604"
                                            },
                                            "id": 5066,
                                            "name": "Literal",
                                            "src": "3274:32:43"
                                          }
                                        ],
                                        "id": 5067,
                                        "name": "BinaryOperation",
                                        "src": "3266:40:43"
                                      }
                                    ],
                                    "id": 5068,
                                    "name": "TupleExpression",
                                    "src": "3265:42:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5069,
                                    "name": "Literal",
                                    "src": "3311:3:43"
                                  }
                                ],
                                "id": 5070,
                                "name": "BinaryOperation",
                                "src": "3265:49:43"
                              }
                            ],
                            "id": 5071,
                            "name": "Assignment",
                            "src": "3257:57:43"
                          }
                        ],
                        "id": 5072,
                        "name": "ExpressionStatement",
                        "src": "3257:57:43"
                      }
                    ],
                    "id": 5073,
                    "name": "IfStatement",
                    "src": "3229:85:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 5074,
                                "name": "Identifier",
                                "src": "3328:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783430303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 262144",
                                  "value": "0x40000"
                                },
                                "id": 5075,
                                "name": "Literal",
                                "src": "3338:7:43"
                              }
                            ],
                            "id": 5076,
                            "name": "BinaryOperation",
                            "src": "3328:17:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5077,
                            "name": "Literal",
                            "src": "3349:1:43"
                          }
                        ],
                        "id": 5078,
                        "name": "BinaryOperation",
                        "src": "3328:22:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5079,
                                "name": "Identifier",
                                "src": "3352:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5080,
                                            "name": "Identifier",
                                            "src": "3361:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "307832323136653538346635666131656139323630343162656466653938",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 6914...(25 digits omitted)...4168",
                                              "value": "0x2216e584f5fa1ea926041bedfe98"
                                            },
                                            "id": 5081,
                                            "name": "Literal",
                                            "src": "3369:30:43"
                                          }
                                        ],
                                        "id": 5082,
                                        "name": "BinaryOperation",
                                        "src": "3361:38:43"
                                      }
                                    ],
                                    "id": 5083,
                                    "name": "TupleExpression",
                                    "src": "3360:40:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5084,
                                    "name": "Literal",
                                    "src": "3404:3:43"
                                  }
                                ],
                                "id": 5085,
                                "name": "BinaryOperation",
                                "src": "3360:47:43"
                              }
                            ],
                            "id": 5086,
                            "name": "Assignment",
                            "src": "3352:55:43"
                          }
                        ],
                        "id": 5087,
                        "name": "ExpressionStatement",
                        "src": "3352:55:43"
                      }
                    ],
                    "id": 5088,
                    "name": "IfStatement",
                    "src": "3324:83:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4777,
                                  "type": "uint256",
                                  "value": "absTick"
                                },
                                "id": 5089,
                                "name": "Identifier",
                                "src": "3421:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30783830303030",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 524288",
                                  "value": "0x80000"
                                },
                                "id": 5090,
                                "name": "Literal",
                                "src": "3431:7:43"
                              }
                            ],
                            "id": 5091,
                            "name": "BinaryOperation",
                            "src": "3421:17:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5092,
                            "name": "Literal",
                            "src": "3442:1:43"
                          }
                        ],
                        "id": 5093,
                        "name": "BinaryOperation",
                        "src": "3421:22:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5094,
                                "name": "Identifier",
                                "src": "3445:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "*",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5095,
                                            "name": "Identifier",
                                            "src": "3454:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30783438613137303339316637646334323434346538666132",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1404880482679654955896180642",
                                              "value": "0x48a170391f7dc42444e8fa2"
                                            },
                                            "id": 5096,
                                            "name": "Literal",
                                            "src": "3462:25:43"
                                          }
                                        ],
                                        "id": 5097,
                                        "name": "BinaryOperation",
                                        "src": "3454:33:43"
                                      }
                                    ],
                                    "id": 5098,
                                    "name": "TupleExpression",
                                    "src": "3453:35:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5099,
                                    "name": "Literal",
                                    "src": "3492:3:43"
                                  }
                                ],
                                "id": 5100,
                                "name": "BinaryOperation",
                                "src": "3453:42:43"
                              }
                            ],
                            "id": 5101,
                            "name": "Assignment",
                            "src": "3445:50:43"
                          }
                        ],
                        "id": 5102,
                        "name": "ExpressionStatement",
                        "src": "3445:50:43"
                      }
                    ],
                    "id": 5103,
                    "name": "IfStatement",
                    "src": "3417:78:43"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4771,
                              "type": "int24",
                              "value": "tick"
                            },
                            "id": 5104,
                            "name": "Identifier",
                            "src": "3510:4:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5105,
                            "name": "Literal",
                            "src": "3517:1:43"
                          }
                        ],
                        "id": 5106,
                        "name": "BinaryOperation",
                        "src": "3510:8:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4809,
                                  "type": "uint256",
                                  "value": "ratio"
                                },
                                "id": 5107,
                                "name": "Identifier",
                                "src": "3520:5:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "max",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "type(uint256)",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": -27,
                                              "type": "function () pure",
                                              "value": "type"
                                            },
                                            "id": 5108,
                                            "name": "Identifier",
                                            "src": "3528:4:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint256",
                                                  "type": null
                                                },
                                                "id": 5109,
                                                "name": "ElementaryTypeName",
                                                "src": "3533:7:43"
                                              }
                                            ],
                                            "id": 5110,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "3533:7:43"
                                          }
                                        ],
                                        "id": 5111,
                                        "name": "FunctionCall",
                                        "src": "3528:13:43"
                                      }
                                    ],
                                    "id": 5112,
                                    "name": "MemberAccess",
                                    "src": "3528:17:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4809,
                                      "type": "uint256",
                                      "value": "ratio"
                                    },
                                    "id": 5113,
                                    "name": "Identifier",
                                    "src": "3548:5:43"
                                  }
                                ],
                                "id": 5114,
                                "name": "BinaryOperation",
                                "src": "3528:25:43"
                              }
                            ],
                            "id": 5115,
                            "name": "Assignment",
                            "src": "3520:33:43"
                          }
                        ],
                        "id": 5116,
                        "name": "ExpressionStatement",
                        "src": "3520:33:43"
                      }
                    ],
                    "id": 5117,
                    "name": "IfStatement",
                    "src": "3506:47:43"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint160"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4774,
                              "type": "uint160",
                              "value": "sqrtPriceX96"
                            },
                            "id": 5118,
                            "name": "Identifier",
                            "src": "3863:12:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint160",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint160)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint160",
                                      "type": null
                                    },
                                    "id": 5119,
                                    "name": "ElementaryTypeName",
                                    "src": "3878:7:43"
                                  }
                                ],
                                "id": 5120,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3878:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": ">>",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4809,
                                              "type": "uint256",
                                              "value": "ratio"
                                            },
                                            "id": 5121,
                                            "name": "Identifier",
                                            "src": "3887:5:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "3332",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 32",
                                              "value": "32"
                                            },
                                            "id": 5122,
                                            "name": "Literal",
                                            "src": "3896:2:43"
                                          }
                                        ],
                                        "id": 5123,
                                        "name": "BinaryOperation",
                                        "src": "3887:11:43"
                                      }
                                    ],
                                    "id": 5124,
                                    "name": "TupleExpression",
                                    "src": "3886:13:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint8"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "==",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "%",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4809,
                                                      "type": "uint256",
                                                      "value": "ratio"
                                                    },
                                                    "id": 5125,
                                                    "name": "Identifier",
                                                    "src": "3903:5:43"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "type": "int_const 4294967296"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "commonType": {
                                                            "typeIdentifier": "t_rational_4294967296_by_1",
                                                            "typeString": "int_const 4294967296"
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "operator": "<<",
                                                          "type": "int_const 4294967296"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "hexvalue": "31",
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "subdenomination": null,
                                                              "token": "number",
                                                              "type": "int_const 1",
                                                              "value": "1"
                                                            },
                                                            "id": 5126,
                                                            "name": "Literal",
                                                            "src": "3912:1:43"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "hexvalue": "3332",
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "lValueRequested": false,
                                                              "subdenomination": null,
                                                              "token": "number",
                                                              "type": "int_const 32",
                                                              "value": "32"
                                                            },
                                                            "id": 5127,
                                                            "name": "Literal",
                                                            "src": "3917:2:43"
                                                          }
                                                        ],
                                                        "id": 5128,
                                                        "name": "BinaryOperation",
                                                        "src": "3912:7:43"
                                                      }
                                                    ],
                                                    "id": 5129,
                                                    "name": "TupleExpression",
                                                    "src": "3911:9:43"
                                                  }
                                                ],
                                                "id": 5130,
                                                "name": "BinaryOperation",
                                                "src": "3903:17:43"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 5131,
                                                "name": "Literal",
                                                "src": "3924:1:43"
                                              }
                                            ],
                                            "id": 5132,
                                            "name": "BinaryOperation",
                                            "src": "3903:22:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 5133,
                                            "name": "Literal",
                                            "src": "3928:1:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "31",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1",
                                              "value": "1"
                                            },
                                            "id": 5134,
                                            "name": "Literal",
                                            "src": "3932:1:43"
                                          }
                                        ],
                                        "id": 5135,
                                        "name": "Conditional",
                                        "src": "3903:30:43"
                                      }
                                    ],
                                    "id": 5136,
                                    "name": "TupleExpression",
                                    "src": "3902:32:43"
                                  }
                                ],
                                "id": 5137,
                                "name": "BinaryOperation",
                                "src": "3886:48:43"
                              }
                            ],
                            "id": 5138,
                            "name": "FunctionCall",
                            "src": "3878:57:43"
                          }
                        ],
                        "id": 5139,
                        "name": "Assignment",
                        "src": "3863:72:43"
                      }
                    ],
                    "id": 5140,
                    "name": "ExpressionStatement",
                    "src": "3863:72:43"
                  }
                ],
                "id": 5141,
                "name": "Block",
                "src": "1447:2495:43"
              }
            ],
            "id": 5142,
            "name": "FunctionDefinition",
            "src": "1362:2580:43"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getTickAtSqrtRatio",
              "overrides": null,
              "scope": 5282,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n @return tick The greatest tick for which the ratio is less than or equal to the input ratio"
                },
                "id": 5143,
                "name": "StructuredDocumentation",
                "src": "3948:408:43"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sqrtPriceX96",
                      "overrides": null,
                      "scope": 5281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 5144,
                        "name": "ElementaryTypeName",
                        "src": "4389:7:43"
                      }
                    ],
                    "id": 5145,
                    "name": "VariableDeclaration",
                    "src": "4389:20:43"
                  }
                ],
                "id": 5146,
                "name": "ParameterList",
                "src": "4388:22:43"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tick",
                      "overrides": null,
                      "scope": 5281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 5147,
                        "name": "ElementaryTypeName",
                        "src": "4434:5:43"
                      }
                    ],
                    "id": 5148,
                    "name": "VariableDeclaration",
                    "src": "4434:10:43"
                  }
                ],
                "id": 5149,
                "name": "ParameterList",
                "src": "4433:12:43"
              },
              {
                "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_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2",
                                  "typeString": "literal_string \"R\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5150,
                            "name": "Identifier",
                            "src": "4555:7:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5145,
                                      "type": "uint160",
                                      "value": "sqrtPriceX96"
                                    },
                                    "id": 5151,
                                    "name": "Identifier",
                                    "src": "4563:12:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4765,
                                      "type": "uint160",
                                      "value": "MIN_SQRT_RATIO"
                                    },
                                    "id": 5152,
                                    "name": "Identifier",
                                    "src": "4579:14:43"
                                  }
                                ],
                                "id": 5153,
                                "name": "BinaryOperation",
                                "src": "4563:30:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5145,
                                      "type": "uint160",
                                      "value": "sqrtPriceX96"
                                    },
                                    "id": 5154,
                                    "name": "Identifier",
                                    "src": "4597:12:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4768,
                                      "type": "uint160",
                                      "value": "MAX_SQRT_RATIO"
                                    },
                                    "id": 5155,
                                    "name": "Identifier",
                                    "src": "4612:14:43"
                                  }
                                ],
                                "id": 5156,
                                "name": "BinaryOperation",
                                "src": "4597:29:43"
                              }
                            ],
                            "id": 5157,
                            "name": "BinaryOperation",
                            "src": "4563:63:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "52",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"R\"",
                              "value": "R"
                            },
                            "id": 5158,
                            "name": "Literal",
                            "src": "4628:3:43"
                          }
                        ],
                        "id": 5159,
                        "name": "FunctionCall",
                        "src": "4555:77:43"
                      }
                    ],
                    "id": 5160,
                    "name": "ExpressionStatement",
                    "src": "4555:77:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5162
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "ratio",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5161,
                            "name": "ElementaryTypeName",
                            "src": "4642:7:43"
                          }
                        ],
                        "id": 5162,
                        "name": "VariableDeclaration",
                        "src": "4642:13:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<<",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": null
                                    },
                                    "id": 5163,
                                    "name": "ElementaryTypeName",
                                    "src": "4658:7:43"
                                  }
                                ],
                                "id": 5164,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4658:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5145,
                                  "type": "uint160",
                                  "value": "sqrtPriceX96"
                                },
                                "id": 5165,
                                "name": "Identifier",
                                "src": "4666:12:43"
                              }
                            ],
                            "id": 5166,
                            "name": "FunctionCall",
                            "src": "4658:21:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 5167,
                            "name": "Literal",
                            "src": "4683:2:43"
                          }
                        ],
                        "id": 5168,
                        "name": "BinaryOperation",
                        "src": "4658:27:43"
                      }
                    ],
                    "id": 5169,
                    "name": "VariableDeclarationStatement",
                    "src": "4642:43:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5171
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "r",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5170,
                            "name": "ElementaryTypeName",
                            "src": "4696:7:43"
                          }
                        ],
                        "id": 5171,
                        "name": "VariableDeclaration",
                        "src": "4696:9:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 5162,
                          "type": "uint256",
                          "value": "ratio"
                        },
                        "id": 5172,
                        "name": "Identifier",
                        "src": "4708:5:43"
                      }
                    ],
                    "id": 5173,
                    "name": "VariableDeclarationStatement",
                    "src": "4696:17:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5175
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "msb",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5174,
                            "name": "ElementaryTypeName",
                            "src": "4723:7:43"
                          }
                        ],
                        "id": 5175,
                        "name": "VariableDeclaration",
                        "src": "4723:11:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 5176,
                        "name": "Literal",
                        "src": "4737:1:43"
                      }
                    ],
                    "id": 5177,
                    "name": "VariableDeclarationStatement",
                    "src": "4723:15:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4843:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4853:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4791:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4873:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4885:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5178,
                    "name": "InlineAssembly",
                    "src": "4749:148:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4984:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4994:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4948:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5014:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5026:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5179,
                    "name": "InlineAssembly",
                    "src": "4906:132:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5117:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5127:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5089:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5147:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5159:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(5, gt(r, 0xFFFFFFFF))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5180,
                    "name": "InlineAssembly",
                    "src": "5047:124:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5246:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5256:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5222:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5276:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5288:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(4, gt(r, 0xFFFF))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5181,
                    "name": "InlineAssembly",
                    "src": "5180:120:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5373:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5383:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5351:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5403:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5415:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(3, gt(r, 0xFF))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5182,
                    "name": "InlineAssembly",
                    "src": "5309:118:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5499:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5509:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5478:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5529:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5541:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(2, gt(r, 0xF))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5183,
                    "name": "InlineAssembly",
                    "src": "5436:117:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5625:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5635:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5604:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5655:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5667:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := shl(1, gt(r, 0x3))\n    msb := or(msb, f)\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5184,
                    "name": "InlineAssembly",
                    "src": "5562:117:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5743:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5175,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5753:3:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5723:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let f := gt(r, 0x1)\n    msb := or(msb, f)\n}"
                    },
                    "children": [],
                    "id": 5185,
                    "name": "InlineAssembly",
                    "src": "5688:82:43"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5175,
                              "type": "uint256",
                              "value": "msb"
                            },
                            "id": 5186,
                            "name": "Identifier",
                            "src": "5784:3:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "313238",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 128",
                              "value": "128"
                            },
                            "id": 5187,
                            "name": "Literal",
                            "src": "5791:3:43"
                          }
                        ],
                        "id": 5188,
                        "name": "BinaryOperation",
                        "src": "5784:10:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5171,
                                  "type": "uint256",
                                  "value": "r"
                                },
                                "id": 5189,
                                "name": "Identifier",
                                "src": "5796:1:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5162,
                                      "type": "uint256",
                                      "value": "ratio"
                                    },
                                    "id": 5190,
                                    "name": "Identifier",
                                    "src": "5800:5:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5175,
                                              "type": "uint256",
                                              "value": "msb"
                                            },
                                            "id": 5191,
                                            "name": "Identifier",
                                            "src": "5810:3:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "313237",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 127",
                                              "value": "127"
                                            },
                                            "id": 5192,
                                            "name": "Literal",
                                            "src": "5816:3:43"
                                          }
                                        ],
                                        "id": 5193,
                                        "name": "BinaryOperation",
                                        "src": "5810:9:43"
                                      }
                                    ],
                                    "id": 5194,
                                    "name": "TupleExpression",
                                    "src": "5809:11:43"
                                  }
                                ],
                                "id": 5195,
                                "name": "BinaryOperation",
                                "src": "5800:20:43"
                              }
                            ],
                            "id": 5196,
                            "name": "Assignment",
                            "src": "5796:24:43"
                          }
                        ],
                        "id": 5197,
                        "name": "ExpressionStatement",
                        "src": "5796:24:43"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5171,
                                  "type": "uint256",
                                  "value": "r"
                                },
                                "id": 5198,
                                "name": "Identifier",
                                "src": "5835:1:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5162,
                                      "type": "uint256",
                                      "value": "ratio"
                                    },
                                    "id": 5199,
                                    "name": "Identifier",
                                    "src": "5839:5:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "313237",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 127",
                                              "value": "127"
                                            },
                                            "id": 5200,
                                            "name": "Literal",
                                            "src": "5849:3:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5175,
                                              "type": "uint256",
                                              "value": "msb"
                                            },
                                            "id": 5201,
                                            "name": "Identifier",
                                            "src": "5855:3:43"
                                          }
                                        ],
                                        "id": 5202,
                                        "name": "BinaryOperation",
                                        "src": "5849:9:43"
                                      }
                                    ],
                                    "id": 5203,
                                    "name": "TupleExpression",
                                    "src": "5848:11:43"
                                  }
                                ],
                                "id": 5204,
                                "name": "BinaryOperation",
                                "src": "5839:20:43"
                              }
                            ],
                            "id": 5205,
                            "name": "Assignment",
                            "src": "5835:24:43"
                          }
                        ],
                        "id": 5206,
                        "name": "ExpressionStatement",
                        "src": "5835:24:43"
                      }
                    ],
                    "id": 5207,
                    "name": "IfStatement",
                    "src": "5780:79:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5209
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "log_2",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int256",
                              "type": "int256"
                            },
                            "id": 5208,
                            "name": "ElementaryTypeName",
                            "src": "5870:6:43"
                          }
                        ],
                        "id": 5209,
                        "name": "VariableDeclaration",
                        "src": "5870:12:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<<",
                          "type": "int256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "int256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "int256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(int256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "int256",
                                              "type": null
                                            },
                                            "id": 5210,
                                            "name": "ElementaryTypeName",
                                            "src": "5886:6:43"
                                          }
                                        ],
                                        "id": 5211,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "5886:6:43"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5175,
                                          "type": "uint256",
                                          "value": "msb"
                                        },
                                        "id": 5212,
                                        "name": "Identifier",
                                        "src": "5893:3:43"
                                      }
                                    ],
                                    "id": 5213,
                                    "name": "FunctionCall",
                                    "src": "5886:11:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 5214,
                                    "name": "Literal",
                                    "src": "5900:3:43"
                                  }
                                ],
                                "id": 5215,
                                "name": "BinaryOperation",
                                "src": "5886:17:43"
                              }
                            ],
                            "id": 5216,
                            "name": "TupleExpression",
                            "src": "5885:19:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3634",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 64",
                              "value": "64"
                            },
                            "id": 5217,
                            "name": "Literal",
                            "src": "5908:2:43"
                          }
                        ],
                        "id": 5218,
                        "name": "BinaryOperation",
                        "src": "5885:25:43"
                      }
                    ],
                    "id": 5219,
                    "name": "VariableDeclarationStatement",
                    "src": "5870:40:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6014:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6026:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5944:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5962:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5965:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "5999:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6057:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6069:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(63, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5220,
                    "name": "InlineAssembly",
                    "src": "5921:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6183:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6195:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6113:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6131:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6134:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6168:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6226:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6238:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(62, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5221,
                    "name": "InlineAssembly",
                    "src": "6090:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6352:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6364:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6282:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6300:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6303:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6337:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6395:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6407:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(61, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5222,
                    "name": "InlineAssembly",
                    "src": "6259:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6521:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6533:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6451:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6469:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6472:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6506:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6564:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6576:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(60, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5223,
                    "name": "InlineAssembly",
                    "src": "6428:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6690:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6702:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6620:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6638:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6641:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6675:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6733:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6745:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(59, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5224,
                    "name": "InlineAssembly",
                    "src": "6597:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6859:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6871:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6789:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6807:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6810:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6844:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6902:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6914:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(58, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5225,
                    "name": "InlineAssembly",
                    "src": "6766:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7028:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7040:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6958:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6976:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "6979:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7013:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7071:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7083:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(57, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5226,
                    "name": "InlineAssembly",
                    "src": "6935:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7197:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7209:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7127:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7145:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7148:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7182:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7240:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7252:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(56, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5227,
                    "name": "InlineAssembly",
                    "src": "7104:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7366:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7378:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7296:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7314:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7317:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7351:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7409:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7421:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(55, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5228,
                    "name": "InlineAssembly",
                    "src": "7273:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7535:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7547:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7465:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7483:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7486:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7520:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7578:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7590:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(54, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5229,
                    "name": "InlineAssembly",
                    "src": "7442:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7704:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7716:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7634:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7652:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7655:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7689:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7747:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7759:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(53, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5230,
                    "name": "InlineAssembly",
                    "src": "7611:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7873:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7885:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7803:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7821:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7824:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7858:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7916:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7928:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(52, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5231,
                    "name": "InlineAssembly",
                    "src": "7780:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8042:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8054:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7972:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7990:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "7993:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8027:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8085:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8097:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(51, f))\n    r := shr(f, r)\n}"
                    },
                    "children": [],
                    "id": 5232,
                    "name": "InlineAssembly",
                    "src": "7949:160:43"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8211:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5209,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8223:5:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8141:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8159:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8162:1:43",
                          "valueSize": 1
                        },
                        {
                          "declaration": 5171,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "8196:1:43",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    r := shr(127, mul(r, r))\n    let f := shr(128, r)\n    log_2 := or(log_2, shl(50, f))\n}"
                    },
                    "children": [],
                    "id": 5233,
                    "name": "InlineAssembly",
                    "src": "8118:133:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5235
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "log_sqrt10001",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int256",
                              "type": "int256"
                            },
                            "id": 5234,
                            "name": "ElementaryTypeName",
                            "src": "8261:6:43"
                          }
                        ],
                        "id": 5235,
                        "name": "VariableDeclaration",
                        "src": "8261:20:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "int256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5209,
                              "type": "int256",
                              "value": "log_2"
                            },
                            "id": 5236,
                            "name": "Identifier",
                            "src": "8284:5:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "323535373338393538393939363033383236333437313431",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 255738958999603826347141",
                              "value": "255738958999603826347141"
                            },
                            "id": 5237,
                            "name": "Literal",
                            "src": "8292:24:43"
                          }
                        ],
                        "id": 5238,
                        "name": "BinaryOperation",
                        "src": "8284:32:43"
                      }
                    ],
                    "id": 5239,
                    "name": "VariableDeclarationStatement",
                    "src": "8261:55:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5241
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tickLow",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int24",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 5240,
                            "name": "ElementaryTypeName",
                            "src": "8345:5:43"
                          }
                        ],
                        "id": 5241,
                        "name": "VariableDeclaration",
                        "src": "8345:13:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int24",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(int24)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "int24",
                                  "type": null
                                },
                                "id": 5242,
                                "name": "ElementaryTypeName",
                                "src": "8361:5:43"
                              }
                            ],
                            "id": 5243,
                            "name": "ElementaryTypeNameExpression",
                            "src": "8361:5:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">>",
                              "type": "int256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5235,
                                          "type": "int256",
                                          "value": "log_sqrt10001"
                                        },
                                        "id": 5244,
                                        "name": "Identifier",
                                        "src": "8368:13:43"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "33343032393932393536383039313332343138353936313430313030363630323437323130",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 3402...(29 digits omitted)...7210",
                                          "value": "3402992956809132418596140100660247210"
                                        },
                                        "id": 5245,
                                        "name": "Literal",
                                        "src": "8384:37:43"
                                      }
                                    ],
                                    "id": 5246,
                                    "name": "BinaryOperation",
                                    "src": "8368:53:43"
                                  }
                                ],
                                "id": 5247,
                                "name": "TupleExpression",
                                "src": "8367:55:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "313238",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 128",
                                  "value": "128"
                                },
                                "id": 5248,
                                "name": "Literal",
                                "src": "8426:3:43"
                              }
                            ],
                            "id": 5249,
                            "name": "BinaryOperation",
                            "src": "8367:62:43"
                          }
                        ],
                        "id": 5250,
                        "name": "FunctionCall",
                        "src": "8361:69:43"
                      }
                    ],
                    "id": 5251,
                    "name": "VariableDeclarationStatement",
                    "src": "8345:85:43"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5253
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tickHi",
                          "overrides": null,
                          "scope": 5280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int24",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 5252,
                            "name": "ElementaryTypeName",
                            "src": "8440:5:43"
                          }
                        ],
                        "id": 5253,
                        "name": "VariableDeclaration",
                        "src": "8440:12:43"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int24",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(int24)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "int24",
                                  "type": null
                                },
                                "id": 5254,
                                "name": "ElementaryTypeName",
                                "src": "8455:5:43"
                              }
                            ],
                            "id": 5255,
                            "name": "ElementaryTypeNameExpression",
                            "src": "8455:5:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">>",
                              "type": "int256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "int256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "int256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5235,
                                          "type": "int256",
                                          "value": "log_sqrt10001"
                                        },
                                        "id": 5256,
                                        "name": "Identifier",
                                        "src": "8462:13:43"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "323931333339343634373731393839363232393037303237363231313533333938303838343935",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 2913...(31 digits omitted)...8495",
                                          "value": "291339464771989622907027621153398088495"
                                        },
                                        "id": 5257,
                                        "name": "Literal",
                                        "src": "8478:39:43"
                                      }
                                    ],
                                    "id": 5258,
                                    "name": "BinaryOperation",
                                    "src": "8462:55:43"
                                  }
                                ],
                                "id": 5259,
                                "name": "TupleExpression",
                                "src": "8461:57:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "313238",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 128",
                                  "value": "128"
                                },
                                "id": 5260,
                                "name": "Literal",
                                "src": "8522:3:43"
                              }
                            ],
                            "id": 5261,
                            "name": "BinaryOperation",
                            "src": "8461:64:43"
                          }
                        ],
                        "id": 5262,
                        "name": "FunctionCall",
                        "src": "8455:71:43"
                      }
                    ],
                    "id": 5263,
                    "name": "VariableDeclarationStatement",
                    "src": "8440:86:43"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "int24"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5148,
                              "type": "int24",
                              "value": "tick"
                            },
                            "id": 5264,
                            "name": "Identifier",
                            "src": "8537:4:43"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5241,
                                      "type": "int24",
                                      "value": "tickLow"
                                    },
                                    "id": 5265,
                                    "name": "Identifier",
                                    "src": "8544:7:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5253,
                                      "type": "int24",
                                      "value": "tickHi"
                                    },
                                    "id": 5266,
                                    "name": "Identifier",
                                    "src": "8555:6:43"
                                  }
                                ],
                                "id": 5267,
                                "name": "BinaryOperation",
                                "src": "8544:17:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5241,
                                  "type": "int24",
                                  "value": "tickLow"
                                },
                                "id": 5268,
                                "name": "Identifier",
                                "src": "8564:7:43"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint160",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5142,
                                              "type": "function (int24) pure returns (uint160)",
                                              "value": "getSqrtRatioAtTick"
                                            },
                                            "id": 5269,
                                            "name": "Identifier",
                                            "src": "8574:18:43"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5253,
                                              "type": "int24",
                                              "value": "tickHi"
                                            },
                                            "id": 5270,
                                            "name": "Identifier",
                                            "src": "8593:6:43"
                                          }
                                        ],
                                        "id": 5271,
                                        "name": "FunctionCall",
                                        "src": "8574:26:43"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5145,
                                          "type": "uint160",
                                          "value": "sqrtPriceX96"
                                        },
                                        "id": 5272,
                                        "name": "Identifier",
                                        "src": "8604:12:43"
                                      }
                                    ],
                                    "id": 5273,
                                    "name": "BinaryOperation",
                                    "src": "8574:42:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5253,
                                      "type": "int24",
                                      "value": "tickHi"
                                    },
                                    "id": 5274,
                                    "name": "Identifier",
                                    "src": "8619:6:43"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5241,
                                      "type": "int24",
                                      "value": "tickLow"
                                    },
                                    "id": 5275,
                                    "name": "Identifier",
                                    "src": "8628:7:43"
                                  }
                                ],
                                "id": 5276,
                                "name": "Conditional",
                                "src": "8574:61:43"
                              }
                            ],
                            "id": 5277,
                            "name": "Conditional",
                            "src": "8544:91:43"
                          }
                        ],
                        "id": 5278,
                        "name": "Assignment",
                        "src": "8537:98:43"
                      }
                    ],
                    "id": 5279,
                    "name": "ExpressionStatement",
                    "src": "8537:98:43"
                  }
                ],
                "id": 5280,
                "name": "Block",
                "src": "4446:4196:43"
              }
            ],
            "id": 5281,
            "name": "FunctionDefinition",
            "src": "4361:4281:43"
          }
        ],
        "id": 5282,
        "name": "ContractDefinition",
        "src": "313:8331:43"
      }
    ],
    "id": 5283,
    "name": "SourceUnit",
    "src": "45:8600:43"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-02-07T17:50:42.811Z",
  "devdoc": {
    "methods": {},
    "title": "Math library for computing sqrt prices from ticks and vice versa"
  },
  "userdoc": {
    "methods": {},
    "notice": "Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128"
  }
}