{
  "contractName": "DSThing",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "authority_",
          "type": "address"
        }
      ],
      "name": "setAuthority",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "authority",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": true,
      "inputs": [
        {
          "indexed": true,
          "name": "sig",
          "type": "bytes4"
        },
        {
          "indexed": true,
          "name": "guy",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "foo",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "bar",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "wad",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "fax",
          "type": "bytes"
        }
      ],
      "name": "LogNote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "authority",
          "type": "address"
        }
      ],
      "name": "LogSetAuthority",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "LogSetOwner",
      "type": "event"
    }
  ],
  "bytecode": "0x6080604081905260018054600160a060020a03191633908117909155907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a261037e806100516000396000f3006080604052600436106100615763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af403581146100665780637a9e5e4b146100895780638da5cb5b146100aa578063bf7e214f146100db575b600080fd5b34801561007257600080fd5b50610087600160a060020a03600435166100f0565b005b34801561009557600080fd5b50610087600160a060020a0360043516610180565b3480156100b657600080fd5b506100bf610207565b60408051600160a060020a039092168252519081900360200190f35b3480156100e757600080fd5b506100bf610216565b61012361011e336000357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610225565b610343565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6101ae61011e336000357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610225565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b600054600160a060020a031681565b6000600160a060020a0383163014156102405750600161033d565b600154600160a060020a038481169116141561025e5750600161033d565b600054600160a060020a031615156102785750600061033d565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301523060248301527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561030e57600080fd5b505af1158015610322573d6000803e3d6000fd5b505050506040513d602081101561033857600080fd5b505190505b92915050565b80151561034f57600080fd5b505600a165627a7a72305820a2a6ed21d6b37777e34b7e64d8a80ba1024db30b678cc555df9bea4f8676f2e90029",
  "deployedBytecode": "0x6080604052600436106100615763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313af403581146100665780637a9e5e4b146100895780638da5cb5b146100aa578063bf7e214f146100db575b600080fd5b34801561007257600080fd5b50610087600160a060020a03600435166100f0565b005b34801561009557600080fd5b50610087600160a060020a0360043516610180565b3480156100b657600080fd5b506100bf610207565b60408051600160a060020a039092168252519081900360200190f35b3480156100e757600080fd5b506100bf610216565b61012361011e336000357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610225565b610343565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6101ae61011e336000357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610225565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b600054600160a060020a031681565b6000600160a060020a0383163014156102405750600161033d565b600154600160a060020a038481169116141561025e5750600161033d565b600054600160a060020a031615156102785750600061033d565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301523060248301527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561030e57600080fd5b505af1158015610322573d6000803e3d6000fd5b505050506040513d602081101561033857600080fd5b505190505b92915050565b80151561034f57600080fd5b505600a165627a7a72305820a2a6ed21d6b37777e34b7e64d8a80ba1024db30b678cc555df9bea4f8676f2e90029",
  "sourceMap": "6628:46:8:-;;;;;835:5;:18;;-1:-1:-1;;;;;;835:18:8;843:10;835:18;;;;;;843:10;863:23;;835:5;;863:23;6628:46;;;;;;",
  "deployedSourceMap": "6628:46:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;899:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;899:110:8;-1:-1:-1;;;;;899:110:8;;;;;;;1015:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1015:138:8;-1:-1:-1;;;;;1015:138:8;;;;;774:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;774:26:8;;;;;;;;-1:-1:-1;;;;;774:26:8;;;;;;;;;;;;;;738:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;738:30:8;;;;899:110;1183:41;1190:33;1203:10;1215:7;;-1:-1:-1;;1215:7:8;1190:12;:33::i;:::-;1183:6;:41::i;:::-;960:5;:14;;-1:-1:-1;;960:14:8;-1:-1:-1;;;;;960:14:8;;;;;;;;;;;984:18;;996:5;;;984:18;;-1:-1:-1;;984:18:8;899:110;:::o;1015:138::-;1183:41;1190:33;1203:10;1215:7;;-1:-1:-1;;1215:7:8;1190:12;:33::i;1183:41::-;1088:9;:22;;-1:-1:-1;;1088:22:8;-1:-1:-1;;;;;1088:22:8;;;;;;;;;;1120:26;;1136:9;;;1120:26;;;1015:138;:::o;774:26::-;;;-1:-1:-1;;;;;774:26:8;;:::o;738:30::-;;;-1:-1:-1;;;;;738:30:8;;:::o;1351:356::-;1416:4;-1:-1:-1;;;;;1436:20:8;;1451:4;1436:20;1432:269;;;-1:-1:-1;1479:4:8;1472:11;;1432:269;1511:5;;-1:-1:-1;;;;;1504:12:8;;;1511:5;;1504:12;1500:201;;;-1:-1:-1;1539:4:8;1532:11;;1500:201;1589:1;1564:9;-1:-1:-1;;;;;1564:9:8;:27;1560:141;;;-1:-1:-1;1614:5:8;1607:12;;1560:141;1657:9;;;:33;;;;;;-1:-1:-1;;;;;1657:33:8;;;;;;;1680:4;1657:33;;;;-1:-1:-1;;1657:33:8;;;;;;;;:9;;;;;:17;;:33;;;;;;;;;;;;;;;;;;:9;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1657:33:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1657:33:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1657:33:8;;-1:-1:-1;1560:141:8;1351:356;;;;:::o;1713:63::-;1761:1;1760:2;1756:13;;;1764:5;;;1756:13;1713:63;:::o",
  "source": "/// return median value of feeds\n\n// Copyright (C) 2017  DappHub, LLC\n\n// Licensed under the Apache License, Version 2.0 (the \"License\").\n// You may not use this file except in compliance with the License.\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND (express or implied).\n\npragma solidity ^0.4.8;\n\ncontract DSAuthority {\n    function canCall(\n        address src, address dst, bytes4 sig\n    ) constant returns (bool);\n}\n\ncontract DSAuthEvents {\n    event LogSetAuthority (address indexed authority);\n    event LogSetOwner     (address indexed owner);\n}\n\ncontract DSAuth is DSAuthEvents {\n    DSAuthority  public  authority;\n    address      public  owner;\n\n    function DSAuth() {\n        owner = msg.sender;\n        LogSetOwner(msg.sender);\n    }\n\n    function setOwner(address owner_)\n        auth\n    {\n        owner = owner_;\n        LogSetOwner(owner);\n    }\n\n    function setAuthority(DSAuthority authority_)\n        auth\n    {\n        authority = authority_;\n        LogSetAuthority(authority);\n    }\n\n    modifier auth {\n        assert(isAuthorized(msg.sender, msg.sig));\n        _;\n    }\n\n    modifier authorized(bytes4 sig) {\n        assert(isAuthorized(msg.sender, sig));\n        _;\n    }\n\n    function isAuthorized(address src, bytes4 sig) internal returns (bool) {\n        if (src == address(this)) {\n            return true;\n        } else if (src == owner) {\n            return true;\n        } else if (authority == DSAuthority(0)) {\n            return false;\n        } else {\n            return authority.canCall(src, this, sig);\n        }\n    }\n\n    function assert(bool x) internal {\n        if (!x) throw;\n    }\n}\n\ncontract DSNote {\n    event LogNote(\n        bytes4   indexed  sig,\n        address  indexed  guy,\n        bytes32  indexed  foo,\n        bytes32  indexed  bar,\n\tuint\t \t  wad,\n        bytes             fax\n    ) anonymous;\n\n    modifier note {\n        bytes32 foo;\n        bytes32 bar;\n\n        assembly {\n            foo := calldataload(4)\n            bar := calldataload(36)\n        }\n\n        LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);\n\n        _;\n    }\n}\n\ncontract DSMath {\n\n    /*\n    standard uint256 functions\n     */\n\n    function add(uint256 x, uint256 y) constant internal returns (uint256 z) {\n        assert((z = x + y) >= x);\n    }\n\n    function sub(uint256 x, uint256 y) constant internal returns (uint256 z) {\n        assert((z = x - y) <= x);\n    }\n\n    function mul(uint256 x, uint256 y) constant internal returns (uint256 z) {\n        assert((z = x * y) >= x);\n    }\n\n    function div(uint256 x, uint256 y) constant internal returns (uint256 z) {\n        z = x / y;\n    }\n\n    function min(uint256 x, uint256 y) constant internal returns (uint256 z) {\n        return x <= y ? x : y;\n    }\n    function max(uint256 x, uint256 y) constant internal returns (uint256 z) {\n        return x >= y ? x : y;\n    }\n\n    /*\n    uint128 functions (h is for half)\n     */\n\n\n    function hadd(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        assert((z = x + y) >= x);\n    }\n\n    function hsub(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        assert((z = x - y) <= x);\n    }\n\n    function hmul(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        assert((z = x * y) >= x);\n    }\n\n    function hdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        z = x / y;\n    }\n\n    function hmin(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        return x <= y ? x : y;\n    }\n    function hmax(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        return x >= y ? x : y;\n    }\n\n\n    /*\n    int256 functions\n     */\n\n    function imin(int256 x, int256 y) constant internal returns (int256 z) {\n        return x <= y ? x : y;\n    }\n    function imax(int256 x, int256 y) constant internal returns (int256 z) {\n        return x >= y ? x : y;\n    }\n\n    /*\n    WAD math\n     */\n\n    uint128 constant WAD = 10 ** 18;\n\n    function wadd(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hadd(x, y);\n    }\n\n    function wsub(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hsub(x, y);\n    }\n\n    function wmul(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        z = cast((uint256(x) * y + WAD / 2) / WAD);\n    }\n\n    function wdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        z = cast((uint256(x) * WAD + y / 2) / y);\n    }\n\n    function wmin(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hmin(x, y);\n    }\n    function wmax(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hmax(x, y);\n    }\n\n    /*\n    RAY math\n     */\n\n    uint128 constant RAY = 10 ** 27;\n\n    function radd(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hadd(x, y);\n    }\n\n    function rsub(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hsub(x, y);\n    }\n\n    function rmul(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        z = cast((uint256(x) * y + RAY / 2) / RAY);\n    }\n\n    function rdiv(uint128 x, uint128 y) constant internal returns (uint128 z) {\n        z = cast((uint256(x) * RAY + y / 2) / y);\n    }\n\n    function rpow(uint128 x, uint64 n) constant internal returns (uint128 z) {\n        // This famous algorithm is called \"exponentiation by squaring\"\n        // and calculates x^n with x as fixed-point and n as regular unsigned.\n        //\n        // It's O(log n), instead of O(n) for naive repeated multiplication.\n        //\n        // These facts are why it works:\n        //\n        //  If n is even, then x^n = (x^2)^(n/2).\n        //  If n is odd,  then x^n = x * x^(n-1),\n        //   and applying the equation for even x gives\n        //    x^n = x * (x^2)^((n-1) / 2).\n        //\n        //  Also, EVM division is flooring and\n        //    floor[(n-1) / 2] = floor[n / 2].\n\n        z = n % 2 != 0 ? x : RAY;\n\n        for (n /= 2; n != 0; n /= 2) {\n            x = rmul(x, x);\n\n            if (n % 2 != 0) {\n                z = rmul(z, x);\n            }\n        }\n    }\n\n    function rmin(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hmin(x, y);\n    }\n    function rmax(uint128 x, uint128 y) constant internal returns (uint128) {\n        return hmax(x, y);\n    }\n\n    function cast(uint256 x) constant internal returns (uint128 z) {\n        assert((z = uint128(x)) == x);\n    }\n\n}\n\ncontract DSThing is DSAuth, DSNote, DSMath {\n}\n\ncontract DSValue is DSThing {\n    bool    has;\n    bytes32 val;\n    function peek() constant returns (bytes32, bool) {\n        return (val,has);\n    }\n    function read() constant returns (bytes32) {\n        var (wut, has) = peek();\n        assert(has);\n        return wut;\n    }\n    function poke(bytes32 wut) note auth {\n        val = wut;\n        has = true;\n    }\n    function void() note auth { // unset the value\n        has = false;\n    }\n}\n\ncontract Medianizer is DSValue {\n    mapping (bytes12 => address) public values;\n    mapping (address => bytes12) public indexes;\n    bytes12 public next = 0x1;\n\n    uint96 public min = 0x1;\n\n    function set(address wat) auth {\n        bytes12 nextId = bytes12(uint96(next) + 1);\n        assert(nextId != 0x0);\n        set(next, wat);\n        next = nextId;\n    }\n\n    function set(bytes12 pos, address wat) note auth {\n        if (pos == 0x0) throw;\n\n        if (wat != 0 && indexes[wat] != 0) throw;\n\n        indexes[values[pos]] = 0; // Making sure to remove a possible existing address in that position\n\n        if (wat != 0) {\n            indexes[wat] = pos;\n        }\n\n        values[pos] = wat;\n    }\n\n    function setMin(uint96 min_) note auth {\n        if (min_ == 0x0) throw;\n        min = min_;\n    }\n\n    function setNext(bytes12 next_) note auth {\n        if (next_ == 0x0) throw;\n        next = next_;\n    }\n\n    function unset(bytes12 pos) {\n        set(pos, 0);\n    }\n\n    function unset(address wat) {\n        set(indexes[wat], 0);\n    }\n\n    function poke() {\n        poke(0);\n    }\n\n    function poke(bytes32) note {\n        (val, has) = compute();\n    }\n\n    function compute() constant returns (bytes32, bool) {\n        bytes32[] memory wuts = new bytes32[](uint96(next) - 1);\n        uint96 ctr = 0;\n        for (uint96 i = 1; i < uint96(next); i++) {\n            if (values[bytes12(i)] != 0) {\n                var (wut, wuz) = DSValue(values[bytes12(i)]).peek();\n                if (wuz) {\n                    if (ctr == 0 || wut >= wuts[ctr - 1]) {\n                        wuts[ctr] = wut;\n                    } else {\n                        uint96 j = 0;\n                        while (wut >= wuts[j]) {\n                            j++;\n                        }\n                        for (uint96 k = ctr; k > j; k--) {\n                            wuts[k] = wuts[k - 1];\n                        }\n                        wuts[j] = wut;\n                    }\n                    ctr++;\n                }\n            }\n        }\n\n        if (ctr < min) return (val, false);\n\n        bytes32 value;\n        if (ctr % 2 == 0) {\n            uint128 val1 = uint128(wuts[(ctr / 2) - 1]);\n            uint128 val2 = uint128(wuts[ctr / 2]);\n            value = bytes32(wdiv(hadd(val1, val2), 2 ether));\n        } else {\n            value = wuts[(ctr - 1) / 2];\n        }\n\n        return (value, true);\n    }\n\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/external/Medianizer.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/external/Medianizer.sol",
    "exportedSymbols": {
      "DSAuth": [
        1840
      ],
      "DSAuthEvents": [
        1707
      ],
      "DSAuthority": [
        1698
      ],
      "DSMath": [
        2452
      ],
      "DSNote": [
        1879
      ],
      "DSThing": [
        2459
      ],
      "DSValue": [
        2525
      ],
      "Medianizer": [
        2911
      ]
    },
    "id": 2912,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1686,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "418:23:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1698,
        "linearizedBaseContracts": [
          1698
        ],
        "name": "DSAuthority",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 1697,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1688,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "496:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1687,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "496:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1690,
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "509:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "509:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1692,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "522:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1691,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "522:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "486:52:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1695,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "557:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1694,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "556:6:8"
            },
            "scope": 1698,
            "src": "470:93:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2912,
        "src": "443:122:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1707,
        "linearizedBaseContracts": [
          1707
        ],
        "name": "DSAuthEvents",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 1702,
            "name": "LogSetAuthority",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1700,
                  "indexed": true,
                  "name": "authority",
                  "nodeType": "VariableDeclaration",
                  "scope": 1702,
                  "src": "618:25:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1699,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "618:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "617:27:8"
            },
            "src": "595:50:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1706,
            "name": "LogSetOwner",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1704,
                  "indexed": true,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1706,
                  "src": "673:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1703,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "673:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "672:23:8"
            },
            "src": "650:46:8"
          }
        ],
        "scope": 2912,
        "src": "567:131:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1708,
              "name": "DSAuthEvents",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1707,
              "src": "719:12:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuthEvents_$1707",
                "typeString": "contract DSAuthEvents"
              }
            },
            "id": 1709,
            "nodeType": "InheritanceSpecifier",
            "src": "719:12:8"
          }
        ],
        "contractDependencies": [
          1707
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1840,
        "linearizedBaseContracts": [
          1840,
          1707
        ],
        "name": "DSAuth",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1711,
            "name": "authority",
            "nodeType": "VariableDeclaration",
            "scope": 1840,
            "src": "738:30:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DSAuthority_$1698",
              "typeString": "contract DSAuthority"
            },
            "typeName": {
              "contractScope": null,
              "id": 1710,
              "name": "DSAuthority",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1698,
              "src": "738:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuthority_$1698",
                "typeString": "contract DSAuthority"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1713,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 1840,
            "src": "774:26:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1712,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "774:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1726,
              "nodeType": "Block",
              "src": "825:68:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1716,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1713,
                      "src": "835:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1717,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23131,
                        "src": "843:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "843:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "835:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1720,
                  "nodeType": "ExpressionStatement",
                  "src": "835:18:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1722,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "875:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "875:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1721,
                      "name": "LogSetOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1706,
                      "src": "863:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "863:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1725,
                  "nodeType": "ExpressionStatement",
                  "src": "863:23:8"
                }
              ]
            },
            "documentation": null,
            "id": 1727,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "DSAuth",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "822:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1715,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:8"
            },
            "scope": 1840,
            "src": "807:86:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1742,
              "nodeType": "Block",
              "src": "950:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1734,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1713,
                      "src": "960:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1735,
                      "name": "owner_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1729,
                      "src": "968:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "960:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1737,
                  "nodeType": "ExpressionStatement",
                  "src": "960:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1739,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1713,
                        "src": "996:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1738,
                      "name": "LogSetOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1706,
                      "src": "984:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "984:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1741,
                  "nodeType": "ExpressionStatement",
                  "src": "984:18:8"
                }
              ]
            },
            "documentation": null,
            "id": 1743,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1732,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1731,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "941:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "941:4:8"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1729,
                  "name": "owner_",
                  "nodeType": "VariableDeclaration",
                  "scope": 1743,
                  "src": "917:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1728,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "917:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "916:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "950:0:8"
            },
            "scope": 1840,
            "src": "899:110:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1758,
              "nodeType": "Block",
              "src": "1078:75:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1750,
                      "name": "authority",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1711,
                      "src": "1088:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DSAuthority_$1698",
                        "typeString": "contract DSAuthority"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1751,
                      "name": "authority_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1745,
                      "src": "1100:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DSAuthority_$1698",
                        "typeString": "contract DSAuthority"
                      }
                    },
                    "src": "1088:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DSAuthority_$1698",
                      "typeString": "contract DSAuthority"
                    }
                  },
                  "id": 1753,
                  "nodeType": "ExpressionStatement",
                  "src": "1088:22:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1755,
                        "name": "authority",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1711,
                        "src": "1136:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DSAuthority_$1698",
                          "typeString": "contract DSAuthority"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DSAuthority_$1698",
                          "typeString": "contract DSAuthority"
                        }
                      ],
                      "id": 1754,
                      "name": "LogSetAuthority",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1702,
                      "src": "1120:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1120:26:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1757,
                  "nodeType": "ExpressionStatement",
                  "src": "1120:26:8"
                }
              ]
            },
            "documentation": null,
            "id": 1759,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1748,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1747,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "1069:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1069:4:8"
              }
            ],
            "name": "setAuthority",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1745,
                  "name": "authority_",
                  "nodeType": "VariableDeclaration",
                  "scope": 1759,
                  "src": "1037:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DSAuthority_$1698",
                    "typeString": "contract DSAuthority"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1744,
                    "name": "DSAuthority",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1698,
                    "src": "1037:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DSAuthority_$1698",
                      "typeString": "contract DSAuthority"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1036:24:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1078:0:8"
            },
            "scope": 1840,
            "src": "1015:138:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1771,
              "nodeType": "Block",
              "src": "1173:69:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1763,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "1203:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1203:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1765,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "1215:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sig",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1215:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 1762,
                          "name": "isAuthorized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1829,
                          "src": "1190:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (address,bytes4) returns (bool)"
                          }
                        },
                        "id": 1767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1190:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1761,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "1183:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 1768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1183:41:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1769,
                  "nodeType": "ExpressionStatement",
                  "src": "1183:41:8"
                },
                {
                  "id": 1770,
                  "nodeType": "PlaceholderStatement",
                  "src": "1234:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 1772,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1760,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1173:0:8"
            },
            "src": "1159:83:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1785,
              "nodeType": "Block",
              "src": "1280:65:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1778,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "1310:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1310:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1780,
                            "name": "sig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1774,
                            "src": "1322:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 1777,
                          "name": "isAuthorized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1829,
                          "src": "1297:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (address,bytes4) returns (bool)"
                          }
                        },
                        "id": 1781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1297:29:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1776,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "1290:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 1782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1290:37:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1783,
                  "nodeType": "ExpressionStatement",
                  "src": "1290:37:8"
                },
                {
                  "id": 1784,
                  "nodeType": "PlaceholderStatement",
                  "src": "1337:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 1786,
            "name": "authorized",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1774,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1786,
                  "src": "1268:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1773,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:12:8"
            },
            "src": "1248:97:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1828,
              "nodeType": "Block",
              "src": "1422:285:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1795,
                      "name": "src",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1788,
                      "src": "1436:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1797,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23210,
                          "src": "1451:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DSAuth_$1840",
                            "typeString": "contract DSAuth"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DSAuth_$1840",
                            "typeString": "contract DSAuth"
                          }
                        ],
                        "id": 1796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1443:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1443:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1436:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1803,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1788,
                        "src": "1504:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1804,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1713,
                        "src": "1511:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1504:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_contract$_DSAuthority_$1698",
                          "typeString": "contract DSAuthority"
                        },
                        "id": 1813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1809,
                          "name": "authority",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1711,
                          "src": "1564:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DSAuthority_$1698",
                            "typeString": "contract DSAuthority"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1589:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1810,
                            "name": "DSAuthority",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1698,
                            "src": "1577:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DSAuthority_$1698_$",
                              "typeString": "type(contract DSAuthority)"
                            }
                          },
                          "id": 1812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1577:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DSAuthority_$1698",
                            "typeString": "contract DSAuthority"
                          }
                        },
                        "src": "1564:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1824,
                        "nodeType": "Block",
                        "src": "1636:65:8",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1819,
                                  "name": "src",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1788,
                                  "src": "1675:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1820,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23210,
                                  "src": "1680:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DSAuth_$1840",
                                    "typeString": "contract DSAuth"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1821,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1790,
                                  "src": "1686:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_DSAuth_$1840",
                                    "typeString": "contract DSAuth"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1817,
                                  "name": "authority",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1711,
                                  "src": "1657:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DSAuthority_$1698",
                                    "typeString": "contract DSAuthority"
                                  }
                                },
                                "id": 1818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "canCall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1697,
                                "src": "1657:17:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes4_$returns$_t_bool_$",
                                  "typeString": "function (address,address,bytes4) view external returns (bool)"
                                }
                              },
                              "id": 1822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1657:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 1794,
                            "id": 1823,
                            "nodeType": "Return",
                            "src": "1650:40:8"
                          }
                        ]
                      },
                      "id": 1825,
                      "nodeType": "IfStatement",
                      "src": "1560:141:8",
                      "trueBody": {
                        "id": 1816,
                        "nodeType": "Block",
                        "src": "1593:37:8",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 1814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1614:5:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "functionReturnParameters": 1794,
                            "id": 1815,
                            "nodeType": "Return",
                            "src": "1607:12:8"
                          }
                        ]
                      }
                    },
                    "id": 1826,
                    "nodeType": "IfStatement",
                    "src": "1500:201:8",
                    "trueBody": {
                      "id": 1808,
                      "nodeType": "Block",
                      "src": "1518:36:8",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1539:4:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "functionReturnParameters": 1794,
                          "id": 1807,
                          "nodeType": "Return",
                          "src": "1532:11:8"
                        }
                      ]
                    }
                  },
                  "id": 1827,
                  "nodeType": "IfStatement",
                  "src": "1432:269:8",
                  "trueBody": {
                    "id": 1802,
                    "nodeType": "Block",
                    "src": "1458:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1479:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 1794,
                        "id": 1801,
                        "nodeType": "Return",
                        "src": "1472:11:8"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1829,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "isAuthorized",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1788,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1373:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1373:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1790,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1386:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1789,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1386:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1372:25:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1416:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1416:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1415:6:8"
            },
            "scope": 1840,
            "src": "1351:356:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1838,
              "nodeType": "Block",
              "src": "1746:30:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1760:2:8",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 1834,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1831,
                      "src": "1761:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1837,
                  "nodeType": "IfStatement",
                  "src": "1756:13:8",
                  "trueBody": {
                    "id": 1836,
                    "nodeType": "Throw",
                    "src": "1764:5:8"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1839,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "assert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1831,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1839,
                  "src": "1729:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1830,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1729:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1728:8:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1833,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1746:0:8"
            },
            "scope": 1840,
            "src": "1713:63:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2912,
        "src": "700:1078:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1879,
        "linearizedBaseContracts": [
          1879
        ],
        "name": "DSNote",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": true,
            "documentation": null,
            "id": 1854,
            "name": "LogNote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1842,
                  "indexed": true,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1825:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1841,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1825:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1844,
                  "indexed": true,
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1856:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1843,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1856:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1846,
                  "indexed": true,
                  "name": "foo",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1887:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1845,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1887:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1848,
                  "indexed": true,
                  "name": "bar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1918:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1847,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1918:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1850,
                  "indexed": false,
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1942:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1849,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1942:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1852,
                  "indexed": false,
                  "name": "fax",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1964:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1851,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1964:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1815:176:8"
            },
            "src": "1802:200:8"
          },
          {
            "body": {
              "id": 1877,
              "nodeType": "Block",
              "src": "2022:232:8",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1857,
                      "name": "foo",
                      "nodeType": "VariableDeclaration",
                      "scope": 1878,
                      "src": "2032:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1856,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2032:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1858,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2032:11:8"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1860,
                      "name": "bar",
                      "nodeType": "VariableDeclaration",
                      "scope": 1878,
                      "src": "2053:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1859,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2053:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1861,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2053:11:8"
                },
                {
                  "externalReferences": [
                    {
                      "foo": {
                        "declaration": 1857,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2098:3:8",
                        "valueSize": 1
                      }
                    },
                    {
                      "bar": {
                        "declaration": 1860,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2133:3:8",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1862,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    foo := calldataload(4)\n    bar := calldataload(36)\n}",
                  "src": "2075:108:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1864,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2184:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sig",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2184:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1866,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2193:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2193:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1868,
                        "name": "foo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1857,
                        "src": "2205:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1869,
                        "name": "bar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1860,
                        "src": "2210:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1870,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2215:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2215:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1872,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2226:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2226:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1863,
                      "name": "LogNote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1854,
                      "src": "2176:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes4,address,bytes32,bytes32,uint256,bytes memory)"
                      }
                    },
                    "id": 1874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2176:59:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1875,
                  "nodeType": "ExpressionStatement",
                  "src": "2176:59:8"
                },
                {
                  "id": 1876,
                  "nodeType": "PlaceholderStatement",
                  "src": "2246:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 1878,
            "name": "note",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2022:0:8"
            },
            "src": "2008:246:8",
            "visibility": "internal"
          }
        ],
        "scope": 2912,
        "src": "1780:476:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2452,
        "linearizedBaseContracts": [
          2452
        ],
        "name": "DSMath",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1899,
              "nodeType": "Block",
              "src": "2401:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1896,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1889,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1886,
                                "src": "2419:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1890,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1881,
                                  "src": "2423:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1891,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1883,
                                  "src": "2427:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2423:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2419:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1894,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2418:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1895,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1881,
                          "src": "2433:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2418:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1888,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "2411:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1897,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2411:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1898,
                  "nodeType": "ExpressionStatement",
                  "src": "2411:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 1900,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1884,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1881,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1900,
                  "src": "2341:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2341:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1883,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1900,
                  "src": "2352:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1882,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2340:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1886,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1900,
                  "src": "2390:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1885,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2390:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2389:11:8"
            },
            "scope": 2452,
            "src": "2328:114:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1920,
              "nodeType": "Block",
              "src": "2521:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1910,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1907,
                                "src": "2539:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1911,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1902,
                                  "src": "2543:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1912,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1904,
                                  "src": "2547:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2543:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2539:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1915,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2538:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1916,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1902,
                          "src": "2553:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2538:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1909,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "2531:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2531:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1919,
                  "nodeType": "ExpressionStatement",
                  "src": "2531:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 1921,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "sub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1902,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1921,
                  "src": "2461:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1901,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2461:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1904,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1921,
                  "src": "2472:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1903,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2472:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2460:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1907,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1921,
                  "src": "2510:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1906,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2510:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2509:11:8"
            },
            "scope": 2452,
            "src": "2448:114:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1941,
              "nodeType": "Block",
              "src": "2641:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1931,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1928,
                                "src": "2659:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1932,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1923,
                                  "src": "2663:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1933,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1925,
                                  "src": "2667:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2663:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2659:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1936,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2658:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1937,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1923,
                          "src": "2673:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2658:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1930,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "2651:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2651:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1940,
                  "nodeType": "ExpressionStatement",
                  "src": "2651:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 1942,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "mul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1923,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1942,
                  "src": "2581:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1922,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1925,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1942,
                  "src": "2592:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2592:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2580:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1928,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1942,
                  "src": "2630:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1927,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2630:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2629:11:8"
            },
            "scope": 2452,
            "src": "2568:114:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1957,
              "nodeType": "Block",
              "src": "2761:26:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1951,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1949,
                      "src": "2771:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1954,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1952,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1944,
                        "src": "2775:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1953,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1946,
                        "src": "2779:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2775:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2771:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1956,
                  "nodeType": "ExpressionStatement",
                  "src": "2771:9:8"
                }
              ]
            },
            "documentation": null,
            "id": 1958,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "div",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1944,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1958,
                  "src": "2701:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1943,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2701:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1946,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1958,
                  "src": "2712:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2712:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2700:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1949,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1958,
                  "src": "2750:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1948,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2750:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2749:11:8"
            },
            "scope": 2452,
            "src": "2688:99:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1974,
              "nodeType": "Block",
              "src": "2866:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1967,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "2883:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1968,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1962,
                        "src": "2888:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2883:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 1971,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1962,
                      "src": "2896:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2883:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 1970,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1960,
                      "src": "2892:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1966,
                  "id": 1973,
                  "nodeType": "Return",
                  "src": "2876:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 1975,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "min",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1960,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1975,
                  "src": "2806:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1959,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1962,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1975,
                  "src": "2817:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1961,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2817:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2805:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1965,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1975,
                  "src": "2855:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1964,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2855:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2854:11:8"
            },
            "scope": 2452,
            "src": "2793:111:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1991,
              "nodeType": "Block",
              "src": "2982:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1984,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1977,
                        "src": "2999:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1985,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1979,
                        "src": "3004:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2999:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 1988,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1979,
                      "src": "3012:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2999:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 1987,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1977,
                      "src": "3008:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1983,
                  "id": 1990,
                  "nodeType": "Return",
                  "src": "2992:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 1992,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "max",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1977,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1992,
                  "src": "2922:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2922:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1979,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1992,
                  "src": "2933:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1978,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2933:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2921:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1982,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1992,
                  "src": "2971:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2971:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2970:11:8"
            },
            "scope": 2452,
            "src": "2909:111:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2012,
              "nodeType": "Block",
              "src": "3155:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2002,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1999,
                                "src": "3173:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 2005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2003,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1994,
                                  "src": "3177:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2004,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1996,
                                  "src": "3181:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3177:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "3173:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2007,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3172:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2008,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1994,
                          "src": "3187:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "3172:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2001,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "3165:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3165:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2011,
                  "nodeType": "ExpressionStatement",
                  "src": "3165:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 2013,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hadd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1994,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2013,
                  "src": "3095:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1993,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1996,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2013,
                  "src": "3106:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1995,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3106:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3094:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1999,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2013,
                  "src": "3144:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1998,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3144:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3143:11:8"
            },
            "scope": 2452,
            "src": "3081:115:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2033,
              "nodeType": "Block",
              "src": "3276:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2023,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2020,
                                "src": "3294:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 2026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2024,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2015,
                                  "src": "3298:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2025,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2017,
                                  "src": "3302:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3298:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "3294:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2028,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3293:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2029,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2015,
                          "src": "3308:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "3293:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2022,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "3286:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3286:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2032,
                  "nodeType": "ExpressionStatement",
                  "src": "3286:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 2034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hsub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2018,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2015,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "3216:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2014,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3216:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2017,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "3227:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2016,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3227:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3215:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2020,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "3265:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2019,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3265:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3264:11:8"
            },
            "scope": 2452,
            "src": "3202:115:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2054,
              "nodeType": "Block",
              "src": "3397:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2044,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2041,
                                "src": "3415:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 2047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2045,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2036,
                                  "src": "3419:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2046,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2038,
                                  "src": "3423:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3419:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "3415:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2049,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3414:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2050,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2036,
                          "src": "3429:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "3414:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2043,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "3407:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3407:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2053,
                  "nodeType": "ExpressionStatement",
                  "src": "3407:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 2055,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hmul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2036,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2055,
                  "src": "3337:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2035,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2038,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2055,
                  "src": "3348:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2037,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3348:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3336:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2041,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2055,
                  "src": "3386:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3386:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3385:11:8"
            },
            "scope": 2452,
            "src": "3323:115:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2070,
              "nodeType": "Block",
              "src": "3518:26:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2064,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2062,
                      "src": "3528:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 2067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2065,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2057,
                        "src": "3532:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2066,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "3536:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3532:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "3528:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2069,
                  "nodeType": "ExpressionStatement",
                  "src": "3528:9:8"
                }
              ]
            },
            "documentation": null,
            "id": 2071,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hdiv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2057,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "3458:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2056,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3458:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2059,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "3469:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2058,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3469:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3457:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2062,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "3507:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2061,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3507:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3506:11:8"
            },
            "scope": 2452,
            "src": "3444:100:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2087,
              "nodeType": "Block",
              "src": "3624:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 2082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2080,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2073,
                        "src": "3641:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2081,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2075,
                        "src": "3646:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3641:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2084,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2075,
                      "src": "3654:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 2085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3641:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2083,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2073,
                      "src": "3650:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2079,
                  "id": 2086,
                  "nodeType": "Return",
                  "src": "3634:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2088,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2073,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "3564:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2072,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3564:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2075,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "3575:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2074,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3575:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3563:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2078,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "3613:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2077,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3613:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3612:11:8"
            },
            "scope": 2452,
            "src": "3550:112:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2104,
              "nodeType": "Block",
              "src": "3741:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 2099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2097,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2090,
                        "src": "3758:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2098,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2092,
                        "src": "3763:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3758:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2101,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2092,
                      "src": "3771:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 2102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3758:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2100,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2090,
                      "src": "3767:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2096,
                  "id": 2103,
                  "nodeType": "Return",
                  "src": "3751:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2105,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hmax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2090,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "3681:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2089,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3681:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2092,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "3692:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2091,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3692:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3680:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2096,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2095,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "3730:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2094,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3730:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3729:11:8"
            },
            "scope": 2452,
            "src": "3667:112:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2121,
              "nodeType": "Block",
              "src": "3894:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 2116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2107,
                        "src": "3911:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2115,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "3916:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3911:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2118,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2109,
                      "src": "3924:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 2119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3911:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2117,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2107,
                      "src": "3920:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2113,
                  "id": 2120,
                  "nodeType": "Return",
                  "src": "3904:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2122,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "imin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2107,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3837:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2106,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3837:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2109,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3847:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2108,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3847:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3836:20:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2113,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2112,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3884:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2111,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3884:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3883:10:8"
            },
            "scope": 2452,
            "src": "3823:109:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2138,
              "nodeType": "Block",
              "src": "4008:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 2133,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2131,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2124,
                        "src": "4025:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2132,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2126,
                        "src": "4030:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "4025:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2135,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2126,
                      "src": "4038:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 2136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4025:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2134,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2124,
                      "src": "4034:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2130,
                  "id": 2137,
                  "nodeType": "Return",
                  "src": "4018:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2139,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "imax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2124,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2139,
                  "src": "3951:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2123,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3951:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2126,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2139,
                  "src": "3961:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2125,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3961:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3950:20:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2129,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2139,
                  "src": "3998:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2128,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3998:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3997:10:8"
            },
            "scope": 2452,
            "src": "3937:109:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2144,
            "name": "WAD",
            "nodeType": "VariableDeclaration",
            "scope": 2452,
            "src": "4081:31:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 2140,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "4081:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 2143,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 2141,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4104:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3138",
                "id": 2142,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4110:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "4104:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2158,
              "nodeType": "Block",
              "src": "4191:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2154,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2146,
                        "src": "4213:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2155,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "4216:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2153,
                      "name": "hadd",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2013,
                      "src": "4208:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4208:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2152,
                  "id": 2157,
                  "nodeType": "Return",
                  "src": "4201:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2159,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wadd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2146,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2159,
                  "src": "4133:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2145,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4133:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2148,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2159,
                  "src": "4144:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2147,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4132:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2151,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2159,
                  "src": "4182:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2150,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4182:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4181:9:8"
            },
            "scope": 2452,
            "src": "4119:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2173,
              "nodeType": "Block",
              "src": "4303:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2169,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2161,
                        "src": "4325:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2170,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2163,
                        "src": "4328:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2168,
                      "name": "hsub",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2034,
                      "src": "4320:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4320:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2167,
                  "id": 2172,
                  "nodeType": "Return",
                  "src": "4313:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2174,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wsub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2161,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "4245:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2160,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4245:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2163,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "4256:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2162,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4256:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4244:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2166,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "4294:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2165,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4294:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4293:9:8"
            },
            "scope": 2452,
            "src": "4231:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2200,
              "nodeType": "Block",
              "src": "4417:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2181,
                      "src": "4427:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2186,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2176,
                                        "src": "4445:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2185,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4437:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4437:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2188,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2178,
                                    "src": "4450:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "4437:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2192,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2190,
                                    "name": "WAD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2144,
                                    "src": "4454:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2191,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4460:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4454:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "4437:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2194,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4436:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2195,
                            "name": "WAD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2144,
                            "src": "4465:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "4436:32:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2184,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "4431:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4431:38:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "4427:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2199,
                  "nodeType": "ExpressionStatement",
                  "src": "4427:42:8"
                }
              ]
            },
            "documentation": null,
            "id": 2201,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wmul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2176,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "4357:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2175,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4357:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2178,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "4368:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2177,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4368:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4356:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2181,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "4406:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2180,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4406:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4405:11:8"
            },
            "scope": 2452,
            "src": "4343:133:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2227,
              "nodeType": "Block",
              "src": "4556:57:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2210,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2208,
                      "src": "4566:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2213,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2203,
                                        "src": "4584:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2212,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4576:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4576:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2215,
                                    "name": "WAD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2144,
                                    "src": "4589:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "4576:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2217,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2205,
                                    "src": "4595:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4599:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4595:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "4576:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2221,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4575:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2222,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2205,
                            "src": "4604:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "4575:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2211,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "4570:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4570:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "4566:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2226,
                  "nodeType": "ExpressionStatement",
                  "src": "4566:40:8"
                }
              ]
            },
            "documentation": null,
            "id": 2228,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wdiv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2203,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2228,
                  "src": "4496:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2202,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2205,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2228,
                  "src": "4507:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2204,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4507:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4495:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2208,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2228,
                  "src": "4545:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2207,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4545:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4544:11:8"
            },
            "scope": 2452,
            "src": "4482:131:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2242,
              "nodeType": "Block",
              "src": "4691:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2238,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "4713:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2239,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2232,
                        "src": "4716:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2237,
                      "name": "hmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2088,
                      "src": "4708:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4708:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2236,
                  "id": 2241,
                  "nodeType": "Return",
                  "src": "4701:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2243,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2230,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2243,
                  "src": "4633:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2229,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2232,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2243,
                  "src": "4644:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2231,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4632:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2243,
                  "src": "4682:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2234,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4682:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4681:9:8"
            },
            "scope": 2452,
            "src": "4619:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2257,
              "nodeType": "Block",
              "src": "4802:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2253,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4824:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2254,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2247,
                        "src": "4827:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2252,
                      "name": "hmax",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2105,
                      "src": "4819:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4819:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2251,
                  "id": 2256,
                  "nodeType": "Return",
                  "src": "4812:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2258,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wmax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2245,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2258,
                  "src": "4744:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2244,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4744:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2247,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2258,
                  "src": "4755:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2246,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4755:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4743:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2250,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2258,
                  "src": "4793:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2249,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4793:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4792:9:8"
            },
            "scope": 2452,
            "src": "4730:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2263,
            "name": "RAY",
            "nodeType": "VariableDeclaration",
            "scope": 2452,
            "src": "4871:31:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 2259,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "4871:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000000000000"
              },
              "id": 2262,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 2260,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4894:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3237",
                "id": 2261,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4900:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_27_by_1",
                  "typeString": "int_const 27"
                },
                "value": "27"
              },
              "src": "4894:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2277,
              "nodeType": "Block",
              "src": "4981:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2273,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2265,
                        "src": "5003:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2274,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2267,
                        "src": "5006:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2272,
                      "name": "hadd",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2013,
                      "src": "4998:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2275,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4998:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2271,
                  "id": 2276,
                  "nodeType": "Return",
                  "src": "4991:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2278,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "radd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2265,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2278,
                  "src": "4923:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2264,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4923:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2267,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2278,
                  "src": "4934:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2266,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4934:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4922:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2270,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2278,
                  "src": "4972:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2269,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4972:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4971:9:8"
            },
            "scope": 2452,
            "src": "4909:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2292,
              "nodeType": "Block",
              "src": "5093:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2288,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "5115:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2289,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2282,
                        "src": "5118:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2287,
                      "name": "hsub",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2034,
                      "src": "5110:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5110:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2286,
                  "id": 2291,
                  "nodeType": "Return",
                  "src": "5103:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2293,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rsub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2280,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2293,
                  "src": "5035:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2279,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5035:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2282,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2293,
                  "src": "5046:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2281,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5046:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5034:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2285,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2293,
                  "src": "5084:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2284,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5084:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5083:9:8"
            },
            "scope": 2452,
            "src": "5021:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2319,
              "nodeType": "Block",
              "src": "5207:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2302,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2300,
                      "src": "5217:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2305,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2295,
                                        "src": "5235:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5227:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5227:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2307,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2297,
                                    "src": "5240:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "5227:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2309,
                                    "name": "RAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "5244:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5250:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "5244:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "5227:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2313,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5226:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2314,
                            "name": "RAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2263,
                            "src": "5255:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "5226:32:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2303,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "5221:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5221:38:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "5217:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2318,
                  "nodeType": "ExpressionStatement",
                  "src": "5217:42:8"
                }
              ]
            },
            "documentation": null,
            "id": 2320,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rmul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2295,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2320,
                  "src": "5147:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2294,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5147:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2297,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2320,
                  "src": "5158:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2296,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5158:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5146:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2300,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2320,
                  "src": "5196:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2299,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5196:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5195:11:8"
            },
            "scope": 2452,
            "src": "5133:133:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2346,
              "nodeType": "Block",
              "src": "5346:57:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2329,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2327,
                      "src": "5356:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2332,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2322,
                                        "src": "5374:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2331,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5366:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2333,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5366:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2334,
                                    "name": "RAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "5379:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "5366:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2336,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2324,
                                    "src": "5385:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2337,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5389:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "5385:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "5366:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2340,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5365:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2341,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2324,
                            "src": "5394:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "5365:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2330,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "5360:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5360:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "5356:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2345,
                  "nodeType": "ExpressionStatement",
                  "src": "5356:40:8"
                }
              ]
            },
            "documentation": null,
            "id": 2347,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rdiv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2322,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "5286:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2321,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5286:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2324,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "5297:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2323,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5297:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5285:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2327,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "5335:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2326,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5335:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5334:11:8"
            },
            "scope": 2452,
            "src": "5272:131:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2401,
              "nodeType": "Block",
              "src": "5482:803:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2356,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2354,
                      "src": "6099:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 2359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2357,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2351,
                            "src": "6103:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 2358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6107:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "6103:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6112:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6103:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "id": 2363,
                        "name": "RAY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2263,
                        "src": "6120:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "id": 2364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "6103:20:8",
                      "trueExpression": {
                        "argumentTypes": null,
                        "id": 2362,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2349,
                        "src": "6116:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "6099:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2366,
                  "nodeType": "ExpressionStatement",
                  "src": "6099:24:8"
                },
                {
                  "body": {
                    "id": 2399,
                    "nodeType": "Block",
                    "src": "6163:116:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2378,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2349,
                            "src": "6177:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2349,
                                "src": "6186:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2381,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2349,
                                "src": "6189:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 2379,
                              "name": "rmul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2320,
                              "src": "6181:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                "typeString": "function (uint128,uint128) view returns (uint128)"
                              }
                            },
                            "id": 2382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6181:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "6177:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 2384,
                        "nodeType": "ExpressionStatement",
                        "src": "6177:14:8"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 2389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 2387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2385,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2351,
                              "src": "6210:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6214:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "6210:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6219:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6210:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2398,
                        "nodeType": "IfStatement",
                        "src": "6206:63:8",
                        "trueBody": {
                          "id": 2397,
                          "nodeType": "Block",
                          "src": "6222:47:8",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2390,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "6240:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2392,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "6249:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2393,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2349,
                                      "src": "6252:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 2391,
                                    "name": "rmul",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2320,
                                    "src": "6244:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                      "typeString": "function (uint128,uint128) view returns (uint128)"
                                    }
                                  },
                                  "id": 2394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6244:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "6240:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 2396,
                              "nodeType": "ExpressionStatement",
                              "src": "6240:14:8"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "id": 2373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2371,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2351,
                      "src": "6147:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6152:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6147:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2400,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2367,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2351,
                        "src": "6139:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "/=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6144:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "6139:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 2370,
                    "nodeType": "ExpressionStatement",
                    "src": "6139:6:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2374,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2351,
                        "src": "6155:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "/=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6160:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "6155:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 2377,
                    "nodeType": "ExpressionStatement",
                    "src": "6155:6:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "6134:145:8"
                }
              ]
            },
            "documentation": null,
            "id": 2402,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rpow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2349,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "5423:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5423:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2351,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "5434:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2350,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "5434:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5422:21:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2354,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "5471:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2353,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5471:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5470:11:8"
            },
            "scope": 2452,
            "src": "5409:876:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2416,
              "nodeType": "Block",
              "src": "6363:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2412,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2404,
                        "src": "6385:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2413,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2406,
                        "src": "6388:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2411,
                      "name": "hmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2088,
                      "src": "6380:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6380:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2410,
                  "id": 2415,
                  "nodeType": "Return",
                  "src": "6373:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2417,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2404,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2417,
                  "src": "6305:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2403,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6305:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2406,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2417,
                  "src": "6316:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2405,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6316:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6304:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2409,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2417,
                  "src": "6354:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2408,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6354:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6353:9:8"
            },
            "scope": 2452,
            "src": "6291:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2431,
              "nodeType": "Block",
              "src": "6474:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2427,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "6496:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2428,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2421,
                        "src": "6499:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2426,
                      "name": "hmax",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2105,
                      "src": "6491:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6491:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2425,
                  "id": 2430,
                  "nodeType": "Return",
                  "src": "6484:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2432,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rmax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2419,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "6416:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2418,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6416:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2421,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "6427:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2420,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6427:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6415:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2424,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "6465:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2423,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6465:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6464:9:8"
            },
            "scope": 2452,
            "src": "6402:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2450,
              "nodeType": "Block",
              "src": "6577:46:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2440,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2437,
                                "src": "6595:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2442,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2434,
                                    "src": "6607:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6599:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": "uint128"
                                },
                                "id": 2443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6599:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "6595:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2445,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6594:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2446,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2434,
                          "src": "6614:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6594:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2439,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "6587:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6587:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2449,
                  "nodeType": "ExpressionStatement",
                  "src": "6587:29:8"
                }
              ]
            },
            "documentation": null,
            "id": 2451,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "cast",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2434,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2451,
                  "src": "6528:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6528:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6527:11:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2437,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2451,
                  "src": "6566:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2436,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6566:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6565:11:8"
            },
            "scope": 2452,
            "src": "6514:109:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2912,
        "src": "2258:4368:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2453,
              "name": "DSAuth",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1840,
              "src": "6648:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuth_$1840",
                "typeString": "contract DSAuth"
              }
            },
            "id": 2454,
            "nodeType": "InheritanceSpecifier",
            "src": "6648:6:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2455,
              "name": "DSNote",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1879,
              "src": "6656:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSNote_$1879",
                "typeString": "contract DSNote"
              }
            },
            "id": 2456,
            "nodeType": "InheritanceSpecifier",
            "src": "6656:6:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2457,
              "name": "DSMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2452,
              "src": "6664:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSMath_$2452",
                "typeString": "contract DSMath"
              }
            },
            "id": 2458,
            "nodeType": "InheritanceSpecifier",
            "src": "6664:6:8"
          }
        ],
        "contractDependencies": [
          1707,
          1840,
          1879,
          2452
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2459,
        "linearizedBaseContracts": [
          2459,
          2452,
          1879,
          1840,
          1707
        ],
        "name": "DSThing",
        "nodeType": "ContractDefinition",
        "nodes": [],
        "scope": 2912,
        "src": "6628:46:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2460,
              "name": "DSThing",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2459,
              "src": "6696:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSThing_$2459",
                "typeString": "contract DSThing"
              }
            },
            "id": 2461,
            "nodeType": "InheritanceSpecifier",
            "src": "6696:7:8"
          }
        ],
        "contractDependencies": [
          1707,
          1840,
          1879,
          2452,
          2459
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2525,
        "linearizedBaseContracts": [
          2525,
          2459,
          2452,
          1879,
          1840,
          1707
        ],
        "name": "DSValue",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2463,
            "name": "has",
            "nodeType": "VariableDeclaration",
            "scope": 2525,
            "src": "6710:11:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2462,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "6710:4:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2465,
            "name": "val",
            "nodeType": "VariableDeclaration",
            "scope": 2525,
            "src": "6727:11:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2464,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "6727:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2476,
              "nodeType": "Block",
              "src": "6793:33:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2472,
                        "name": "val",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "6811:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2473,
                        "name": "has",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2463,
                        "src": "6815:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2474,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6810:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                      "typeString": "tuple(bytes32,bool)"
                    }
                  },
                  "functionReturnParameters": 2471,
                  "id": 2475,
                  "nodeType": "Return",
                  "src": "6803:16:8"
                }
              ]
            },
            "documentation": null,
            "id": 2477,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "peek",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6757:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2468,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2477,
                  "src": "6778:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2467,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6778:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2470,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2477,
                  "src": "6787:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2469,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6787:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6777:15:8"
            },
            "scope": 2525,
            "src": "6744:82:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2493,
              "nodeType": "Block",
              "src": "6874:81:8",
              "statements": [
                {
                  "assignments": [
                    2482,
                    2483
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2482,
                      "name": "wut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2494,
                      "src": "6889:3:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2483,
                      "name": "has",
                      "nodeType": "VariableDeclaration",
                      "scope": 2494,
                      "src": "6894:3:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2486,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2484,
                      "name": "peek",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2477,
                      "src": "6901:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$_t_bool_$",
                        "typeString": "function () view returns (bytes32,bool)"
                      }
                    },
                    "id": 2485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6901:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                      "typeString": "tuple(bytes32,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6884:23:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2488,
                        "name": "has",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2483,
                        "src": "6924:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2487,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "6917:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 2489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6917:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2490,
                  "nodeType": "ExpressionStatement",
                  "src": "6917:11:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2491,
                    "name": "wut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2482,
                    "src": "6945:3:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2481,
                  "id": 2492,
                  "nodeType": "Return",
                  "src": "6938:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 2494,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6844:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2480,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2494,
                  "src": "6865:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2479,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6865:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6864:9:8"
            },
            "scope": 2525,
            "src": "6831:124:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2511,
              "nodeType": "Block",
              "src": "6997:46:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2503,
                      "name": "val",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2465,
                      "src": "7007:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2504,
                      "name": "wut",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2496,
                      "src": "7013:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7007:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2506,
                  "nodeType": "ExpressionStatement",
                  "src": "7007:9:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2507,
                      "name": "has",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2463,
                      "src": "7026:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7032:4:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7026:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2510,
                  "nodeType": "ExpressionStatement",
                  "src": "7026:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 2512,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2499,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2498,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "6987:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6987:4:8"
              },
              {
                "arguments": null,
                "id": 2501,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2500,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "6992:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6992:4:8"
              }
            ],
            "name": "poke",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2496,
                  "name": "wut",
                  "nodeType": "VariableDeclaration",
                  "scope": 2512,
                  "src": "6974:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2495,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6974:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6973:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6997:0:8"
            },
            "scope": 2525,
            "src": "6960:83:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2523,
              "nodeType": "Block",
              "src": "7074:47:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2519,
                      "name": "has",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2463,
                      "src": "7103:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7109:5:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "7103:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2522,
                  "nodeType": "ExpressionStatement",
                  "src": "7103:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 2524,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2515,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2514,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7064:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7064:4:8"
              },
              {
                "arguments": null,
                "id": 2517,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2516,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7069:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7069:4:8"
              }
            ],
            "name": "void",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7061:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7074:0:8"
            },
            "scope": 2525,
            "src": "7048:73:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2912,
        "src": "6676:447:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2526,
              "name": "DSValue",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2525,
              "src": "7148:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSValue_$2525",
                "typeString": "contract DSValue"
              }
            },
            "id": 2527,
            "nodeType": "InheritanceSpecifier",
            "src": "7148:7:8"
          }
        ],
        "contractDependencies": [
          1707,
          1840,
          1879,
          2452,
          2459,
          2525
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2911,
        "linearizedBaseContracts": [
          2911,
          2525,
          2459,
          2452,
          1879,
          1840,
          1707
        ],
        "name": "Medianizer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2531,
            "name": "values",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7162:42:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
              "typeString": "mapping(bytes12 => address)"
            },
            "typeName": {
              "id": 2530,
              "keyType": {
                "id": 2528,
                "name": "bytes12",
                "nodeType": "ElementaryTypeName",
                "src": "7171:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes12",
                  "typeString": "bytes12"
                }
              },
              "nodeType": "Mapping",
              "src": "7162:28:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                "typeString": "mapping(bytes12 => address)"
              },
              "valueType": {
                "id": 2529,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "7182:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2535,
            "name": "indexes",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7210:43:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
              "typeString": "mapping(address => bytes12)"
            },
            "typeName": {
              "id": 2534,
              "keyType": {
                "id": 2532,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "7219:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "7210:28:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                "typeString": "mapping(address => bytes12)"
              },
              "valueType": {
                "id": 2533,
                "name": "bytes12",
                "nodeType": "ElementaryTypeName",
                "src": "7230:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes12",
                  "typeString": "bytes12"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2538,
            "name": "next",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7259:25:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes12",
              "typeString": "bytes12"
            },
            "typeName": {
              "id": 2536,
              "name": "bytes12",
              "nodeType": "ElementaryTypeName",
              "src": "7259:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes12",
                "typeString": "bytes12"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831",
              "id": 2537,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7281:3:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "0x1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2541,
            "name": "min",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7291:23:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint96",
              "typeString": "uint96"
            },
            "typeName": {
              "id": 2539,
              "name": "uint96",
              "nodeType": "ElementaryTypeName",
              "src": "7291:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint96",
                "typeString": "uint96"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831",
              "id": 2540,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7311:3:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "0x1"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 2573,
              "nodeType": "Block",
              "src": "7352:137:8",
              "statements": [
                {
                  "assignments": [
                    2549
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2549,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2574,
                      "src": "7362:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      },
                      "typeName": {
                        "id": 2548,
                        "name": "bytes12",
                        "nodeType": "ElementaryTypeName",
                        "src": "7362:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2557,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 2555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2552,
                              "name": "next",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2538,
                              "src": "7394:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            ],
                            "id": 2551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7387:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": "uint96"
                          },
                          "id": 2553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7387:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7402:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "7387:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      ],
                      "id": 2550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7379:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes12_$",
                        "typeString": "type(bytes12)"
                      },
                      "typeName": "bytes12"
                    },
                    "id": 2556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7379:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7362:42:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        "id": 2561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2559,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2549,
                          "src": "7421:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 2560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7431:3:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        },
                        "src": "7421:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2558,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "7414:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 2562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7414:21:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2563,
                  "nodeType": "ExpressionStatement",
                  "src": "7414:21:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2565,
                        "name": "next",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2538,
                        "src": "7449:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "wat",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "7455:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2564,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2574,
                        2627
                      ],
                      "referencedDeclaration": 2627,
                      "src": "7445:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes12_$_t_address_$returns$__$",
                        "typeString": "function (bytes12,address)"
                      }
                    },
                    "id": 2567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7445:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2568,
                  "nodeType": "ExpressionStatement",
                  "src": "7445:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2569,
                      "name": "next",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2538,
                      "src": "7469:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2570,
                      "name": "nextId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2549,
                      "src": "7476:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "src": "7469:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "id": 2572,
                  "nodeType": "ExpressionStatement",
                  "src": "7469:13:8"
                }
              ]
            },
            "documentation": null,
            "id": 2574,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2546,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2545,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7347:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7347:4:8"
              }
            ],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2543,
                  "name": "wat",
                  "nodeType": "VariableDeclaration",
                  "scope": 2574,
                  "src": "7334:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7333:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7352:0:8"
            },
            "scope": 2911,
            "src": "7321:168:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2626,
              "nodeType": "Block",
              "src": "7544:289:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    },
                    "id": 2587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2585,
                      "name": "pos",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2576,
                      "src": "7558:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307830",
                      "id": 2586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7565:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "7558:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2589,
                  "nodeType": "IfStatement",
                  "src": "7554:21:8",
                  "trueBody": {
                    "id": 2588,
                    "nodeType": "Throw",
                    "src": "7570:5:8"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2590,
                        "name": "wat",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2578,
                        "src": "7590:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7597:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "7590:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      },
                      "id": 2597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2593,
                          "name": "indexes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2535,
                          "src": "7602:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                            "typeString": "mapping(address => bytes12)"
                          }
                        },
                        "id": 2595,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2594,
                          "name": "wat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2578,
                          "src": "7610:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7602:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7618:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "7602:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7590:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2600,
                  "nodeType": "IfStatement",
                  "src": "7586:40:8",
                  "trueBody": {
                    "id": 2599,
                    "nodeType": "Throw",
                    "src": "7621:5:8"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2601,
                        "name": "indexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2535,
                        "src": "7637:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                          "typeString": "mapping(address => bytes12)"
                        }
                      },
                      "id": 2605,
                      "indexExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2602,
                          "name": "values",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2531,
                          "src": "7645:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                            "typeString": "mapping(bytes12 => address)"
                          }
                        },
                        "id": 2604,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2603,
                          "name": "pos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2576,
                          "src": "7652:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7645:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7637:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7660:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7637:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "id": 2608,
                  "nodeType": "ExpressionStatement",
                  "src": "7637:24:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2609,
                      "name": "wat",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2578,
                      "src": "7746:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7753:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7746:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2619,
                  "nodeType": "IfStatement",
                  "src": "7742:57:8",
                  "trueBody": {
                    "id": 2618,
                    "nodeType": "Block",
                    "src": "7756:43:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2612,
                              "name": "indexes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2535,
                              "src": "7770:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                                "typeString": "mapping(address => bytes12)"
                              }
                            },
                            "id": 2614,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2613,
                              "name": "wat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2578,
                              "src": "7778:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7770:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2615,
                            "name": "pos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2576,
                            "src": "7785:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          },
                          "src": "7770:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "id": 2617,
                        "nodeType": "ExpressionStatement",
                        "src": "7770:18:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2620,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2531,
                        "src": "7809:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                          "typeString": "mapping(bytes12 => address)"
                        }
                      },
                      "id": 2622,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2621,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2576,
                        "src": "7816:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7809:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2623,
                      "name": "wat",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2578,
                      "src": "7823:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7809:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2625,
                  "nodeType": "ExpressionStatement",
                  "src": "7809:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2581,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2580,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7534:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7534:4:8"
              },
              {
                "arguments": null,
                "id": 2583,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2582,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7539:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7539:4:8"
              }
            ],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2576,
                  "name": "pos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2627,
                  "src": "7508:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 2575,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "7508:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2578,
                  "name": "wat",
                  "nodeType": "VariableDeclaration",
                  "scope": 2627,
                  "src": "7521:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7521:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7507:26:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2584,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7544:0:8"
            },
            "scope": 2911,
            "src": "7495:338:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2645,
              "nodeType": "Block",
              "src": "7878:59:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2636,
                      "name": "min_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "7892:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307830",
                      "id": 2637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7900:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "7892:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2640,
                  "nodeType": "IfStatement",
                  "src": "7888:22:8",
                  "trueBody": {
                    "id": 2639,
                    "nodeType": "Throw",
                    "src": "7905:5:8"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2641,
                      "name": "min",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2541,
                        1975
                      ],
                      "referencedDeclaration": 2541,
                      "src": "7920:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2642,
                      "name": "min_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "7926:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "7920:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "id": 2644,
                  "nodeType": "ExpressionStatement",
                  "src": "7920:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 2646,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2632,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2631,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7868:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7868:4:8"
              },
              {
                "arguments": null,
                "id": 2634,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2633,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7873:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7873:4:8"
              }
            ],
            "name": "setMin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2629,
                  "name": "min_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2646,
                  "src": "7855:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 2628,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "7855:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7854:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2635,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7878:0:8"
            },
            "scope": 2911,
            "src": "7839:98:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2664,
              "nodeType": "Block",
              "src": "7985:62:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    },
                    "id": 2657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2655,
                      "name": "next_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "7999:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307830",
                      "id": 2656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8008:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "7999:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2659,
                  "nodeType": "IfStatement",
                  "src": "7995:23:8",
                  "trueBody": {
                    "id": 2658,
                    "nodeType": "Throw",
                    "src": "8013:5:8"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2660,
                      "name": "next",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2538,
                      "src": "8028:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2661,
                      "name": "next_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "8035:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "src": "8028:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "id": 2663,
                  "nodeType": "ExpressionStatement",
                  "src": "8028:12:8"
                }
              ]
            },
            "documentation": null,
            "id": 2665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2651,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2650,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7975:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7975:4:8"
              },
              {
                "arguments": null,
                "id": 2653,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2652,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7980:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7980:4:8"
              }
            ],
            "name": "setNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2648,
                  "name": "next_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2665,
                  "src": "7960:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 2647,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "7960:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7959:15:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7985:0:8"
            },
            "scope": 2911,
            "src": "7943:104:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2675,
              "nodeType": "Block",
              "src": "8081:28:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2671,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2667,
                        "src": "8095:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8100:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2670,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2574,
                        2627
                      ],
                      "referencedDeclaration": 2627,
                      "src": "8091:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes12_$_t_address_$returns$__$",
                        "typeString": "function (bytes12,address)"
                      }
                    },
                    "id": 2673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8091:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2674,
                  "nodeType": "ExpressionStatement",
                  "src": "8091:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 2676,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "unset",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2667,
                  "name": "pos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2676,
                  "src": "8068:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 2666,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "8068:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8067:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2669,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8081:0:8"
            },
            "scope": 2911,
            "src": "8053:56:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2688,
              "nodeType": "Block",
              "src": "8143:37:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2682,
                          "name": "indexes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2535,
                          "src": "8157:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                            "typeString": "mapping(address => bytes12)"
                          }
                        },
                        "id": 2684,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2683,
                          "name": "wat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2678,
                          "src": "8165:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8157:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8171:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2681,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2574,
                        2627
                      ],
                      "referencedDeclaration": 2627,
                      "src": "8153:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes12_$_t_address_$returns$__$",
                        "typeString": "function (bytes12,address)"
                      }
                    },
                    "id": 2686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8153:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2687,
                  "nodeType": "ExpressionStatement",
                  "src": "8153:20:8"
                }
              ]
            },
            "documentation": null,
            "id": 2689,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "unset",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2678,
                  "name": "wat",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "8130:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8130:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8129:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8143:0:8"
            },
            "scope": 2911,
            "src": "8115:65:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2696,
              "nodeType": "Block",
              "src": "8202:24:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8217:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2692,
                      "name": "poke",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2697,
                        2712
                      ],
                      "referencedDeclaration": 2712,
                      "src": "8212:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8212:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2695,
                  "nodeType": "ExpressionStatement",
                  "src": "8212:7:8"
                }
              ]
            },
            "documentation": null,
            "id": 2697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "poke",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2690,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8199:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8202:0:8"
            },
            "scope": 2911,
            "src": "8186:40:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2711,
              "nodeType": "Block",
              "src": "8260:39:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2704,
                          "name": "val",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2465,
                          "src": "8271:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2705,
                          "name": "has",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2463,
                          "src": "8276:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2706,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8270:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                        "typeString": "tuple(bytes32,bool)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2707,
                        "name": "compute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2910,
                        "src": "8283:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$_t_bool_$",
                          "typeString": "function () view returns (bytes32,bool)"
                        }
                      },
                      "id": 2708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8283:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                        "typeString": "tuple(bytes32,bool)"
                      }
                    },
                    "src": "8270:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2710,
                  "nodeType": "ExpressionStatement",
                  "src": "8270:22:8"
                }
              ]
            },
            "documentation": null,
            "id": 2712,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2702,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2701,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "8255:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8255:4:8"
              }
            ],
            "name": "poke",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2699,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2712,
                  "src": "8246:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2698,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8246:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8245:9:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2703,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8260:0:8"
            },
            "scope": 2911,
            "src": "8232:67:8",
            "stateMutability": "nonpayable",
            "superFunction": 2512,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2909,
              "nodeType": "Block",
              "src": "8357:1195:8",
              "statements": [
                {
                  "assignments": [
                    2722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2722,
                      "name": "wuts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2910,
                      "src": "8367:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2720,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8367:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2721,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8367:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2732,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 2730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2727,
                              "name": "next",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2538,
                              "src": "8412:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            ],
                            "id": 2726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8405:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": "uint96"
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8405:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8420:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "8405:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      ],
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8391:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2723,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8395:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2724,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8395:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8391:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8367:55:8"
                },
                {
                  "assignments": [
                    2734
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2734,
                      "name": "ctr",
                      "nodeType": "VariableDeclaration",
                      "scope": 2910,
                      "src": "8432:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 2733,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "8432:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2736,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8445:1:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8432:14:8"
                },
                {
                  "body": {
                    "id": 2838,
                    "nodeType": "Block",
                    "src": "8498:682:8",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2749,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2531,
                              "src": "8516:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                                "typeString": "mapping(bytes12 => address)"
                              }
                            },
                            "id": 2753,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2751,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2738,
                                  "src": "8531:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                ],
                                "id": 2750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8523:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes12_$",
                                  "typeString": "type(bytes12)"
                                },
                                "typeName": "bytes12"
                              },
                              "id": 2752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8523:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8516:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8538:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8516:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2837,
                        "nodeType": "IfStatement",
                        "src": "8512:658:8",
                        "trueBody": {
                          "id": 2836,
                          "nodeType": "Block",
                          "src": "8541:629:8",
                          "statements": [
                            {
                              "assignments": [
                                2756,
                                2757
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2756,
                                  "name": "wut",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2910,
                                  "src": "8564:3:8",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": null,
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 2757,
                                  "name": "wuz",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2910,
                                  "src": "8569:3:8",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": null,
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2767,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2759,
                                          "name": "values",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2531,
                                          "src": "8584:6:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                                            "typeString": "mapping(bytes12 => address)"
                                          }
                                        },
                                        "id": 2763,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2761,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2738,
                                              "src": "8599:1:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            ],
                                            "id": 2760,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "8591:7:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes12_$",
                                              "typeString": "type(bytes12)"
                                            },
                                            "typeName": "bytes12"
                                          },
                                          "id": 2762,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8591:10:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes12",
                                            "typeString": "bytes12"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8584:18:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2758,
                                      "name": "DSValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2525,
                                      "src": "8576:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DSValue_$2525_$",
                                        "typeString": "type(contract DSValue)"
                                      }
                                    },
                                    "id": 2764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8576:27:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DSValue_$2525",
                                      "typeString": "contract DSValue"
                                    }
                                  },
                                  "id": 2765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "peek",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2477,
                                  "src": "8576:32:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$_t_bool_$",
                                    "typeString": "function () view external returns (bytes32,bool)"
                                  }
                                },
                                "id": 2766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8576:34:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                                  "typeString": "tuple(bytes32,bool)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8559:51:8"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 2768,
                                "name": "wuz",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2757,
                                "src": "8632:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2835,
                              "nodeType": "IfStatement",
                              "src": "8628:528:8",
                              "trueBody": {
                                "id": 2834,
                                "nodeType": "Block",
                                "src": "8637:519:8",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 2779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        "id": 2771,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2769,
                                          "name": "ctr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2734,
                                          "src": "8663:3:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 2770,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8670:1:8",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "8663:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "id": 2778,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2772,
                                          "name": "wut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2756,
                                          "src": "8675:3:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2773,
                                            "name": "wuts",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2722,
                                            "src": "8682:4:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                              "typeString": "bytes32[] memory"
                                            }
                                          },
                                          "id": 2777,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            },
                                            "id": 2776,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 2774,
                                              "name": "ctr",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2734,
                                              "src": "8687:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 2775,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8693:1:8",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "8687:7:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "8682:13:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "src": "8675:20:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "8663:32:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 2829,
                                      "nodeType": "Block",
                                      "src": "8767:344:8",
                                      "statements": [
                                        {
                                          "assignments": [
                                            2788
                                          ],
                                          "declarations": [
                                            {
                                              "constant": false,
                                              "id": 2788,
                                              "name": "j",
                                              "nodeType": "VariableDeclaration",
                                              "scope": 2910,
                                              "src": "8793:8:8",
                                              "stateVariable": false,
                                              "storageLocation": "default",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              },
                                              "typeName": {
                                                "id": 2787,
                                                "name": "uint96",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8793:6:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "value": null,
                                              "visibility": "internal"
                                            }
                                          ],
                                          "id": 2790,
                                          "initialValue": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 2789,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8804:1:8",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "nodeType": "VariableDeclarationStatement",
                                          "src": "8793:12:8"
                                        },
                                        {
                                          "body": {
                                            "id": 2799,
                                            "nodeType": "Block",
                                            "src": "8854:60:8",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2797,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "8884:3:8",
                                                  "subExpression": {
                                                    "argumentTypes": null,
                                                    "id": 2796,
                                                    "name": "j",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2788,
                                                    "src": "8884:1:8",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint96",
                                                      "typeString": "uint96"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint96",
                                                    "typeString": "uint96"
                                                  }
                                                },
                                                "id": 2798,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8884:3:8"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            "id": 2795,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 2791,
                                              "name": "wut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2756,
                                              "src": "8838:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2792,
                                                "name": "wuts",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2722,
                                                "src": "8845:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 2794,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2793,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2788,
                                                "src": "8850:1:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "8845:7:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "8838:14:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 2800,
                                          "nodeType": "WhileStatement",
                                          "src": "8831:83:8"
                                        },
                                        {
                                          "body": {
                                            "id": 2821,
                                            "nodeType": "Block",
                                            "src": "8972:78:8",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2819,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2811,
                                                      "name": "wuts",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2722,
                                                      "src": "9002:4:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 2813,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2812,
                                                      "name": "k",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2802,
                                                      "src": "9007:1:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint96",
                                                        "typeString": "uint96"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9002:7:8",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2814,
                                                      "name": "wuts",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2722,
                                                      "src": "9012:4:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 2818,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint96",
                                                        "typeString": "uint96"
                                                      },
                                                      "id": 2817,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 2815,
                                                        "name": "k",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2802,
                                                        "src": "9017:1:8",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint96",
                                                          "typeString": "uint96"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "-",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 2816,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "9021:1:8",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "9017:5:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint96",
                                                        "typeString": "uint96"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9012:11:8",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  },
                                                  "src": "9002:21:8",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                },
                                                "id": 2820,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9002:21:8"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            },
                                            "id": 2807,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 2805,
                                              "name": "k",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2802,
                                              "src": "8960:1:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 2806,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2788,
                                              "src": "8964:1:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "src": "8960:5:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 2822,
                                          "initializationExpression": {
                                            "assignments": [
                                              2802
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 2802,
                                                "name": "k",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2910,
                                                "src": "8944:8:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                },
                                                "typeName": {
                                                  "id": 2801,
                                                  "name": "uint96",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "8944:6:8",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint96",
                                                    "typeString": "uint96"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 2804,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "id": 2803,
                                              "name": "ctr",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2734,
                                              "src": "8955:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "8944:14:8"
                                          },
                                          "loopExpression": {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2809,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "--",
                                              "prefix": false,
                                              "src": "8967:3:8",
                                              "subExpression": {
                                                "argumentTypes": null,
                                                "id": 2808,
                                                "name": "k",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2802,
                                                "src": "8967:1:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "id": 2810,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8967:3:8"
                                          },
                                          "nodeType": "ForStatement",
                                          "src": "8939:111:8"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2827,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2823,
                                                "name": "wuts",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2722,
                                                "src": "9075:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 2825,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2824,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2788,
                                                "src": "9080:1:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "9075:7:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 2826,
                                              "name": "wut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2756,
                                              "src": "9085:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "9075:13:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "id": 2828,
                                          "nodeType": "ExpressionStatement",
                                          "src": "9075:13:8"
                                        }
                                      ]
                                    },
                                    "id": 2830,
                                    "nodeType": "IfStatement",
                                    "src": "8659:452:8",
                                    "trueBody": {
                                      "id": 2786,
                                      "nodeType": "Block",
                                      "src": "8697:64:8",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2784,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2780,
                                                "name": "wuts",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2722,
                                                "src": "8723:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 2782,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2781,
                                                "name": "ctr",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2734,
                                                "src": "8728:3:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "8723:9:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 2783,
                                              "name": "wut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2756,
                                              "src": "8735:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "8723:15:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "id": 2785,
                                          "nodeType": "ExpressionStatement",
                                          "src": "8723:15:8"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2832,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9132:5:8",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 2831,
                                        "name": "ctr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2734,
                                        "src": "9132:3:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 2833,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9132:5:8"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2745,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2741,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2738,
                      "src": "8475:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2743,
                          "name": "next",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2538,
                          "src": "8486:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        ],
                        "id": 2742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8479:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint96_$",
                          "typeString": "type(uint96)"
                        },
                        "typeName": "uint96"
                      },
                      "id": 2744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8479:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "8475:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2839,
                  "initializationExpression": {
                    "assignments": [
                      2738
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2738,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2910,
                        "src": "8461:8:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 2737,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "8461:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2740,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8472:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8461:12:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8493:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2746,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2738,
                        "src": "8493:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "id": 2748,
                    "nodeType": "ExpressionStatement",
                    "src": "8493:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "8456:724:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2840,
                      "name": "ctr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2734,
                      "src": "9194:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2841,
                      "name": "min",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2541,
                        1975
                      ],
                      "referencedDeclaration": 2541,
                      "src": "9200:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "9194:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2847,
                  "nodeType": "IfStatement",
                  "src": "9190:34:8",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2843,
                          "name": "val",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2465,
                          "src": "9213:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9218:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 2845,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9212:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                        "typeString": "tuple(bytes32,bool)"
                      }
                    },
                    "functionReturnParameters": 2718,
                    "id": 2846,
                    "nodeType": "Return",
                    "src": "9205:19:8"
                  }
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2849,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 2910,
                      "src": "9235:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2848,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9235:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2850,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9235:13:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "id": 2853,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2851,
                        "name": "ctr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2734,
                        "src": "9262:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "%",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2852,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9268:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "9262:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9273:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9262:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2903,
                    "nodeType": "Block",
                    "src": "9463:52:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2892,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2849,
                            "src": "9477:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2893,
                              "name": "wuts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2722,
                              "src": "9485:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 2900,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 2899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    },
                                    "id": 2896,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2894,
                                      "name": "ctr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2734,
                                      "src": "9491:3:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9497:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "9491:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "id": 2897,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9490:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 2898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9502:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "9490:13:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9485:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9477:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2902,
                        "nodeType": "ExpressionStatement",
                        "src": "9477:27:8"
                      }
                    ]
                  },
                  "id": 2904,
                  "nodeType": "IfStatement",
                  "src": "9258:257:8",
                  "trueBody": {
                    "id": 2891,
                    "nodeType": "Block",
                    "src": "9276:181:8",
                    "statements": [
                      {
                        "assignments": [
                          2857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2857,
                            "name": "val1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2910,
                            "src": "9290:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 2856,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "9290:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2868,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2859,
                                "name": "wuts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2722,
                                "src": "9313:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 2866,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 2865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "id": 2862,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2860,
                                        "name": "ctr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2734,
                                        "src": "9319:3:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2861,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9325:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "9319:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "id": 2863,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9318:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9330:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9318:13:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9313:19:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9305:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          "id": 2867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9305:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9290:43:8"
                      },
                      {
                        "assignments": [
                          2870
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2870,
                            "name": "val2",
                            "nodeType": "VariableDeclaration",
                            "scope": 2910,
                            "src": "9347:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 2869,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "9347:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2878,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2872,
                                "name": "wuts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2722,
                                "src": "9370:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 2876,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 2875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2873,
                                  "name": "ctr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2734,
                                  "src": "9375:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 2874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9381:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "9375:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9370:13:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9362:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          "id": 2877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9362:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9347:37:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2879,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2849,
                            "src": "9398:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2883,
                                        "name": "val1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2857,
                                        "src": "9424:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2884,
                                        "name": "val2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2870,
                                        "src": "9430:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2882,
                                      "name": "hadd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2013,
                                      "src": "9419:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                        "typeString": "function (uint128,uint128) view returns (uint128)"
                                      }
                                    },
                                    "id": 2885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9419:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9437:7:8",
                                    "subdenomination": "ether",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2000000000000000000_by_1",
                                      "typeString": "int_const 2000000000000000000"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_2000000000000000000_by_1",
                                      "typeString": "int_const 2000000000000000000"
                                    }
                                  ],
                                  "id": 2881,
                                  "name": "wdiv",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2228,
                                  "src": "9414:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                    "typeString": "function (uint128,uint128) view returns (uint128)"
                                  }
                                },
                                "id": 2887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9414:31:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 2880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9406:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 2888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9406:40:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9398:48:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2890,
                        "nodeType": "ExpressionStatement",
                        "src": "9398:48:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2905,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2849,
                        "src": "9533:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9540:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "id": 2907,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9532:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                      "typeString": "tuple(bytes32,bool)"
                    }
                  },
                  "functionReturnParameters": 2718,
                  "id": 2908,
                  "nodeType": "Return",
                  "src": "9525:20:8"
                }
              ]
            },
            "documentation": null,
            "id": 2910,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "compute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2713,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8321:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2715,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2910,
                  "src": "8342:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8342:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2717,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2910,
                  "src": "8351:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2716,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8351:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8341:15:8"
            },
            "scope": 2911,
            "src": "8305:1247:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2912,
        "src": "7125:2430:8"
      }
    ],
    "src": "418:9138:8"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/external/Medianizer.sol",
    "exportedSymbols": {
      "DSAuth": [
        1840
      ],
      "DSAuthEvents": [
        1707
      ],
      "DSAuthority": [
        1698
      ],
      "DSMath": [
        2452
      ],
      "DSNote": [
        1879
      ],
      "DSThing": [
        2459
      ],
      "DSValue": [
        2525
      ],
      "Medianizer": [
        2911
      ]
    },
    "id": 2912,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1686,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "418:23:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1698,
        "linearizedBaseContracts": [
          1698
        ],
        "name": "DSAuthority",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 1697,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1688,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "496:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1687,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "496:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1690,
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "509:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "509:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1692,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "522:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1691,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "522:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "486:52:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1695,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1697,
                  "src": "557:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1694,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "556:6:8"
            },
            "scope": 1698,
            "src": "470:93:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2912,
        "src": "443:122:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1707,
        "linearizedBaseContracts": [
          1707
        ],
        "name": "DSAuthEvents",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 1702,
            "name": "LogSetAuthority",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1700,
                  "indexed": true,
                  "name": "authority",
                  "nodeType": "VariableDeclaration",
                  "scope": 1702,
                  "src": "618:25:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1699,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "618:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "617:27:8"
            },
            "src": "595:50:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1706,
            "name": "LogSetOwner",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1704,
                  "indexed": true,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1706,
                  "src": "673:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1703,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "673:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "672:23:8"
            },
            "src": "650:46:8"
          }
        ],
        "scope": 2912,
        "src": "567:131:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1708,
              "name": "DSAuthEvents",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1707,
              "src": "719:12:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuthEvents_$1707",
                "typeString": "contract DSAuthEvents"
              }
            },
            "id": 1709,
            "nodeType": "InheritanceSpecifier",
            "src": "719:12:8"
          }
        ],
        "contractDependencies": [
          1707
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1840,
        "linearizedBaseContracts": [
          1840,
          1707
        ],
        "name": "DSAuth",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1711,
            "name": "authority",
            "nodeType": "VariableDeclaration",
            "scope": 1840,
            "src": "738:30:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DSAuthority_$1698",
              "typeString": "contract DSAuthority"
            },
            "typeName": {
              "contractScope": null,
              "id": 1710,
              "name": "DSAuthority",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1698,
              "src": "738:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuthority_$1698",
                "typeString": "contract DSAuthority"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1713,
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "scope": 1840,
            "src": "774:26:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1712,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "774:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1726,
              "nodeType": "Block",
              "src": "825:68:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1716,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1713,
                      "src": "835:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1717,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23131,
                        "src": "843:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "843:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "835:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1720,
                  "nodeType": "ExpressionStatement",
                  "src": "835:18:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1722,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "875:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "875:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1721,
                      "name": "LogSetOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1706,
                      "src": "863:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "863:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1725,
                  "nodeType": "ExpressionStatement",
                  "src": "863:23:8"
                }
              ]
            },
            "documentation": null,
            "id": 1727,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "DSAuth",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "822:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1715,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:8"
            },
            "scope": 1840,
            "src": "807:86:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1742,
              "nodeType": "Block",
              "src": "950:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1734,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1713,
                      "src": "960:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1735,
                      "name": "owner_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1729,
                      "src": "968:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "960:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1737,
                  "nodeType": "ExpressionStatement",
                  "src": "960:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1739,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1713,
                        "src": "996:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1738,
                      "name": "LogSetOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1706,
                      "src": "984:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "984:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1741,
                  "nodeType": "ExpressionStatement",
                  "src": "984:18:8"
                }
              ]
            },
            "documentation": null,
            "id": 1743,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1732,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1731,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "941:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "941:4:8"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1729,
                  "name": "owner_",
                  "nodeType": "VariableDeclaration",
                  "scope": 1743,
                  "src": "917:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1728,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "917:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "916:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "950:0:8"
            },
            "scope": 1840,
            "src": "899:110:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1758,
              "nodeType": "Block",
              "src": "1078:75:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1750,
                      "name": "authority",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1711,
                      "src": "1088:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DSAuthority_$1698",
                        "typeString": "contract DSAuthority"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1751,
                      "name": "authority_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1745,
                      "src": "1100:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DSAuthority_$1698",
                        "typeString": "contract DSAuthority"
                      }
                    },
                    "src": "1088:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DSAuthority_$1698",
                      "typeString": "contract DSAuthority"
                    }
                  },
                  "id": 1753,
                  "nodeType": "ExpressionStatement",
                  "src": "1088:22:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1755,
                        "name": "authority",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1711,
                        "src": "1136:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DSAuthority_$1698",
                          "typeString": "contract DSAuthority"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DSAuthority_$1698",
                          "typeString": "contract DSAuthority"
                        }
                      ],
                      "id": 1754,
                      "name": "LogSetAuthority",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1702,
                      "src": "1120:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1120:26:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1757,
                  "nodeType": "ExpressionStatement",
                  "src": "1120:26:8"
                }
              ]
            },
            "documentation": null,
            "id": 1759,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1748,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1747,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "1069:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1069:4:8"
              }
            ],
            "name": "setAuthority",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1745,
                  "name": "authority_",
                  "nodeType": "VariableDeclaration",
                  "scope": 1759,
                  "src": "1037:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DSAuthority_$1698",
                    "typeString": "contract DSAuthority"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1744,
                    "name": "DSAuthority",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1698,
                    "src": "1037:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DSAuthority_$1698",
                      "typeString": "contract DSAuthority"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1036:24:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1078:0:8"
            },
            "scope": 1840,
            "src": "1015:138:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1771,
              "nodeType": "Block",
              "src": "1173:69:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1763,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "1203:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1203:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1765,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "1215:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sig",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1215:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 1762,
                          "name": "isAuthorized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1829,
                          "src": "1190:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (address,bytes4) returns (bool)"
                          }
                        },
                        "id": 1767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1190:33:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1761,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "1183:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 1768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1183:41:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1769,
                  "nodeType": "ExpressionStatement",
                  "src": "1183:41:8"
                },
                {
                  "id": 1770,
                  "nodeType": "PlaceholderStatement",
                  "src": "1234:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 1772,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1760,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1173:0:8"
            },
            "src": "1159:83:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1785,
              "nodeType": "Block",
              "src": "1280:65:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1778,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23131,
                              "src": "1310:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1310:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1780,
                            "name": "sig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1774,
                            "src": "1322:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 1777,
                          "name": "isAuthorized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1829,
                          "src": "1297:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (address,bytes4) returns (bool)"
                          }
                        },
                        "id": 1781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1297:29:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1776,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "1290:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 1782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1290:37:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1783,
                  "nodeType": "ExpressionStatement",
                  "src": "1290:37:8"
                },
                {
                  "id": 1784,
                  "nodeType": "PlaceholderStatement",
                  "src": "1337:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 1786,
            "name": "authorized",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1774,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1786,
                  "src": "1268:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1773,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:12:8"
            },
            "src": "1248:97:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1828,
              "nodeType": "Block",
              "src": "1422:285:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1795,
                      "name": "src",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1788,
                      "src": "1436:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1797,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23210,
                          "src": "1451:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DSAuth_$1840",
                            "typeString": "contract DSAuth"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_DSAuth_$1840",
                            "typeString": "contract DSAuth"
                          }
                        ],
                        "id": 1796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1443:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1443:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1436:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1803,
                        "name": "src",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1788,
                        "src": "1504:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1804,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1713,
                        "src": "1511:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1504:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_contract$_DSAuthority_$1698",
                          "typeString": "contract DSAuthority"
                        },
                        "id": 1813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1809,
                          "name": "authority",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1711,
                          "src": "1564:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DSAuthority_$1698",
                            "typeString": "contract DSAuthority"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1589:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1810,
                            "name": "DSAuthority",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1698,
                            "src": "1577:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DSAuthority_$1698_$",
                              "typeString": "type(contract DSAuthority)"
                            }
                          },
                          "id": 1812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1577:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DSAuthority_$1698",
                            "typeString": "contract DSAuthority"
                          }
                        },
                        "src": "1564:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1824,
                        "nodeType": "Block",
                        "src": "1636:65:8",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1819,
                                  "name": "src",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1788,
                                  "src": "1675:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1820,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23210,
                                  "src": "1680:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DSAuth_$1840",
                                    "typeString": "contract DSAuth"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1821,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1790,
                                  "src": "1686:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_DSAuth_$1840",
                                    "typeString": "contract DSAuth"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1817,
                                  "name": "authority",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1711,
                                  "src": "1657:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DSAuthority_$1698",
                                    "typeString": "contract DSAuthority"
                                  }
                                },
                                "id": 1818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "canCall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1697,
                                "src": "1657:17:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes4_$returns$_t_bool_$",
                                  "typeString": "function (address,address,bytes4) view external returns (bool)"
                                }
                              },
                              "id": 1822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1657:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 1794,
                            "id": 1823,
                            "nodeType": "Return",
                            "src": "1650:40:8"
                          }
                        ]
                      },
                      "id": 1825,
                      "nodeType": "IfStatement",
                      "src": "1560:141:8",
                      "trueBody": {
                        "id": 1816,
                        "nodeType": "Block",
                        "src": "1593:37:8",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 1814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1614:5:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "functionReturnParameters": 1794,
                            "id": 1815,
                            "nodeType": "Return",
                            "src": "1607:12:8"
                          }
                        ]
                      }
                    },
                    "id": 1826,
                    "nodeType": "IfStatement",
                    "src": "1500:201:8",
                    "trueBody": {
                      "id": 1808,
                      "nodeType": "Block",
                      "src": "1518:36:8",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1539:4:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "functionReturnParameters": 1794,
                          "id": 1807,
                          "nodeType": "Return",
                          "src": "1532:11:8"
                        }
                      ]
                    }
                  },
                  "id": 1827,
                  "nodeType": "IfStatement",
                  "src": "1432:269:8",
                  "trueBody": {
                    "id": 1802,
                    "nodeType": "Block",
                    "src": "1458:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1479:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 1794,
                        "id": 1801,
                        "nodeType": "Return",
                        "src": "1472:11:8"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1829,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "isAuthorized",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1788,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1373:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1787,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1373:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1790,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1386:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1789,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1386:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1372:25:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1416:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1416:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1415:6:8"
            },
            "scope": 1840,
            "src": "1351:356:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1838,
              "nodeType": "Block",
              "src": "1746:30:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1760:2:8",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 1834,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1831,
                      "src": "1761:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1837,
                  "nodeType": "IfStatement",
                  "src": "1756:13:8",
                  "trueBody": {
                    "id": 1836,
                    "nodeType": "Throw",
                    "src": "1764:5:8"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1839,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "assert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1831,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1839,
                  "src": "1729:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1830,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1729:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1728:8:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1833,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1746:0:8"
            },
            "scope": 1840,
            "src": "1713:63:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2912,
        "src": "700:1078:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1879,
        "linearizedBaseContracts": [
          1879
        ],
        "name": "DSNote",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": true,
            "documentation": null,
            "id": 1854,
            "name": "LogNote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1842,
                  "indexed": true,
                  "name": "sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1825:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1841,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1825:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1844,
                  "indexed": true,
                  "name": "guy",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1856:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1843,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1856:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1846,
                  "indexed": true,
                  "name": "foo",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1887:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1845,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1887:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1848,
                  "indexed": true,
                  "name": "bar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1918:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1847,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1918:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1850,
                  "indexed": false,
                  "name": "wad",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1942:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1849,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1942:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1852,
                  "indexed": false,
                  "name": "fax",
                  "nodeType": "VariableDeclaration",
                  "scope": 1854,
                  "src": "1964:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1851,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1964:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1815:176:8"
            },
            "src": "1802:200:8"
          },
          {
            "body": {
              "id": 1877,
              "nodeType": "Block",
              "src": "2022:232:8",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1857,
                      "name": "foo",
                      "nodeType": "VariableDeclaration",
                      "scope": 1878,
                      "src": "2032:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1856,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2032:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1858,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2032:11:8"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1860,
                      "name": "bar",
                      "nodeType": "VariableDeclaration",
                      "scope": 1878,
                      "src": "2053:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1859,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2053:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1861,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2053:11:8"
                },
                {
                  "externalReferences": [
                    {
                      "foo": {
                        "declaration": 1857,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2098:3:8",
                        "valueSize": 1
                      }
                    },
                    {
                      "bar": {
                        "declaration": 1860,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2133:3:8",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 1862,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    foo := calldataload(4)\n    bar := calldataload(36)\n}",
                  "src": "2075:108:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1864,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2184:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sig",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2184:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1866,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2193:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2193:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1868,
                        "name": "foo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1857,
                        "src": "2205:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1869,
                        "name": "bar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1860,
                        "src": "2210:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1870,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2215:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2215:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1872,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2226:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2226:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1863,
                      "name": "LogNote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1854,
                      "src": "2176:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes4,address,bytes32,bytes32,uint256,bytes memory)"
                      }
                    },
                    "id": 1874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2176:59:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1875,
                  "nodeType": "ExpressionStatement",
                  "src": "2176:59:8"
                },
                {
                  "id": 1876,
                  "nodeType": "PlaceholderStatement",
                  "src": "2246:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 1878,
            "name": "note",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2022:0:8"
            },
            "src": "2008:246:8",
            "visibility": "internal"
          }
        ],
        "scope": 2912,
        "src": "1780:476:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2452,
        "linearizedBaseContracts": [
          2452
        ],
        "name": "DSMath",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1899,
              "nodeType": "Block",
              "src": "2401:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1896,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1889,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1886,
                                "src": "2419:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1890,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1881,
                                  "src": "2423:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1891,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1883,
                                  "src": "2427:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2423:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2419:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1894,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2418:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1895,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1881,
                          "src": "2433:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2418:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1888,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "2411:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1897,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2411:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1898,
                  "nodeType": "ExpressionStatement",
                  "src": "2411:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 1900,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1884,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1881,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1900,
                  "src": "2341:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2341:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1883,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1900,
                  "src": "2352:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1882,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2340:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1886,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1900,
                  "src": "2390:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1885,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2390:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2389:11:8"
            },
            "scope": 2452,
            "src": "2328:114:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1920,
              "nodeType": "Block",
              "src": "2521:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1910,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1907,
                                "src": "2539:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1911,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1902,
                                  "src": "2543:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1912,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1904,
                                  "src": "2547:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2543:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2539:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1915,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2538:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1916,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1902,
                          "src": "2553:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2538:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1909,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "2531:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2531:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1919,
                  "nodeType": "ExpressionStatement",
                  "src": "2531:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 1921,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "sub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1902,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1921,
                  "src": "2461:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1901,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2461:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1904,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1921,
                  "src": "2472:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1903,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2472:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2460:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1907,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1921,
                  "src": "2510:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1906,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2510:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2509:11:8"
            },
            "scope": 2452,
            "src": "2448:114:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1941,
              "nodeType": "Block",
              "src": "2641:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1931,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1928,
                                "src": "2659:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1932,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1923,
                                  "src": "2663:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1933,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1925,
                                  "src": "2667:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2663:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2659:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1936,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2658:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1937,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1923,
                          "src": "2673:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2658:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1930,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "2651:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2651:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1940,
                  "nodeType": "ExpressionStatement",
                  "src": "2651:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 1942,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "mul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1923,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1942,
                  "src": "2581:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1922,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1925,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1942,
                  "src": "2592:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2592:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2580:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1929,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1928,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1942,
                  "src": "2630:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1927,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2630:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2629:11:8"
            },
            "scope": 2452,
            "src": "2568:114:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1957,
              "nodeType": "Block",
              "src": "2761:26:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1951,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1949,
                      "src": "2771:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1954,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1952,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1944,
                        "src": "2775:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1953,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1946,
                        "src": "2779:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2775:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2771:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1956,
                  "nodeType": "ExpressionStatement",
                  "src": "2771:9:8"
                }
              ]
            },
            "documentation": null,
            "id": 1958,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "div",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1944,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1958,
                  "src": "2701:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1943,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2701:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1946,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1958,
                  "src": "2712:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2712:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2700:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1949,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1958,
                  "src": "2750:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1948,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2750:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2749:11:8"
            },
            "scope": 2452,
            "src": "2688:99:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1974,
              "nodeType": "Block",
              "src": "2866:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1967,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "2883:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1968,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1962,
                        "src": "2888:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2883:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 1971,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1962,
                      "src": "2896:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2883:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 1970,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1960,
                      "src": "2892:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1966,
                  "id": 1973,
                  "nodeType": "Return",
                  "src": "2876:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 1975,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "min",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1960,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1975,
                  "src": "2806:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1959,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1962,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1975,
                  "src": "2817:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1961,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2817:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2805:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1965,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1975,
                  "src": "2855:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1964,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2855:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2854:11:8"
            },
            "scope": 2452,
            "src": "2793:111:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1991,
              "nodeType": "Block",
              "src": "2982:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1986,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1984,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1977,
                        "src": "2999:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1985,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1979,
                        "src": "3004:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2999:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 1988,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1979,
                      "src": "3012:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2999:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 1987,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1977,
                      "src": "3008:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1983,
                  "id": 1990,
                  "nodeType": "Return",
                  "src": "2992:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 1992,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "max",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1977,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1992,
                  "src": "2922:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2922:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1979,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1992,
                  "src": "2933:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1978,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2933:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2921:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1982,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 1992,
                  "src": "2971:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2971:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2970:11:8"
            },
            "scope": 2452,
            "src": "2909:111:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2012,
              "nodeType": "Block",
              "src": "3155:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2002,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1999,
                                "src": "3173:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 2005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2003,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1994,
                                  "src": "3177:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2004,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1996,
                                  "src": "3181:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3177:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "3173:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2007,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3172:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2008,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1994,
                          "src": "3187:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "3172:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2001,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "3165:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3165:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2011,
                  "nodeType": "ExpressionStatement",
                  "src": "3165:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 2013,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hadd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1994,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2013,
                  "src": "3095:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1993,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3095:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1996,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2013,
                  "src": "3106:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1995,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3106:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3094:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1999,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2013,
                  "src": "3144:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 1998,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3144:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3143:11:8"
            },
            "scope": 2452,
            "src": "3081:115:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2033,
              "nodeType": "Block",
              "src": "3276:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2023,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2020,
                                "src": "3294:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 2026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2024,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2015,
                                  "src": "3298:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2025,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2017,
                                  "src": "3302:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3298:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "3294:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2028,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3293:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2029,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2015,
                          "src": "3308:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "3293:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2022,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "3286:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3286:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2032,
                  "nodeType": "ExpressionStatement",
                  "src": "3286:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 2034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hsub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2018,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2015,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "3216:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2014,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3216:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2017,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "3227:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2016,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3227:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3215:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2020,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2034,
                  "src": "3265:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2019,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3265:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3264:11:8"
            },
            "scope": 2452,
            "src": "3202:115:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2054,
              "nodeType": "Block",
              "src": "3397:41:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 2051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2044,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2041,
                                "src": "3415:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 2047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2045,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2036,
                                  "src": "3419:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2046,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2038,
                                  "src": "3423:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3419:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "3415:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2049,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3414:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2050,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2036,
                          "src": "3429:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "3414:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2043,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "3407:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3407:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2053,
                  "nodeType": "ExpressionStatement",
                  "src": "3407:24:8"
                }
              ]
            },
            "documentation": null,
            "id": 2055,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hmul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2036,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2055,
                  "src": "3337:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2035,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2038,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2055,
                  "src": "3348:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2037,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3348:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3336:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2041,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2055,
                  "src": "3386:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3386:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3385:11:8"
            },
            "scope": 2452,
            "src": "3323:115:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2070,
              "nodeType": "Block",
              "src": "3518:26:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2064,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2062,
                      "src": "3528:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 2067,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2065,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2057,
                        "src": "3532:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2066,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "3536:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3532:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "3528:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2069,
                  "nodeType": "ExpressionStatement",
                  "src": "3528:9:8"
                }
              ]
            },
            "documentation": null,
            "id": 2071,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hdiv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2057,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "3458:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2056,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3458:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2059,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "3469:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2058,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3469:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3457:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2062,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "3507:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2061,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3507:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3506:11:8"
            },
            "scope": 2452,
            "src": "3444:100:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2087,
              "nodeType": "Block",
              "src": "3624:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 2082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2080,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2073,
                        "src": "3641:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2081,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2075,
                        "src": "3646:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3641:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2084,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2075,
                      "src": "3654:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 2085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3641:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2083,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2073,
                      "src": "3650:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2079,
                  "id": 2086,
                  "nodeType": "Return",
                  "src": "3634:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2088,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2073,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "3564:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2072,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3564:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2075,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "3575:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2074,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3575:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3563:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2079,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2078,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "3613:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2077,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3613:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3612:11:8"
            },
            "scope": 2452,
            "src": "3550:112:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2104,
              "nodeType": "Block",
              "src": "3741:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "id": 2099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2097,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2090,
                        "src": "3758:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2098,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2092,
                        "src": "3763:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3758:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2101,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2092,
                      "src": "3771:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "id": 2102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3758:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2100,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2090,
                      "src": "3767:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2096,
                  "id": 2103,
                  "nodeType": "Return",
                  "src": "3751:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2105,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hmax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2090,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "3681:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2089,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3681:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2092,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "3692:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2091,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3692:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3680:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2096,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2095,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "3730:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2094,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3730:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3729:11:8"
            },
            "scope": 2452,
            "src": "3667:112:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2121,
              "nodeType": "Block",
              "src": "3894:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 2116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2107,
                        "src": "3911:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2115,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "3916:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "3911:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2118,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2109,
                      "src": "3924:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 2119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3911:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2117,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2107,
                      "src": "3920:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2113,
                  "id": 2120,
                  "nodeType": "Return",
                  "src": "3904:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2122,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "imin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2107,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3837:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2106,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3837:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2109,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3847:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2108,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3847:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3836:20:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2113,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2112,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3884:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2111,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3884:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3883:10:8"
            },
            "scope": 2452,
            "src": "3823:109:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2138,
              "nodeType": "Block",
              "src": "4008:38:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 2133,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2131,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2124,
                        "src": "4025:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2132,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2126,
                        "src": "4030:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "4025:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 2135,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2126,
                      "src": "4038:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 2136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4025:14:8",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 2134,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2124,
                      "src": "4034:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 2130,
                  "id": 2137,
                  "nodeType": "Return",
                  "src": "4018:21:8"
                }
              ]
            },
            "documentation": null,
            "id": 2139,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "imax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2124,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2139,
                  "src": "3951:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2123,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3951:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2126,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2139,
                  "src": "3961:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2125,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3961:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3950:20:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2129,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2139,
                  "src": "3998:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 2128,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3998:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3997:10:8"
            },
            "scope": 2452,
            "src": "3937:109:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2144,
            "name": "WAD",
            "nodeType": "VariableDeclaration",
            "scope": 2452,
            "src": "4081:31:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 2140,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "4081:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 2143,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 2141,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4104:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3138",
                "id": 2142,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4110:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "4104:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2158,
              "nodeType": "Block",
              "src": "4191:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2154,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2146,
                        "src": "4213:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2155,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "4216:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2153,
                      "name": "hadd",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2013,
                      "src": "4208:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4208:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2152,
                  "id": 2157,
                  "nodeType": "Return",
                  "src": "4201:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2159,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wadd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2146,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2159,
                  "src": "4133:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2145,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4133:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2148,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2159,
                  "src": "4144:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2147,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4132:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2151,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2159,
                  "src": "4182:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2150,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4182:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4181:9:8"
            },
            "scope": 2452,
            "src": "4119:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2173,
              "nodeType": "Block",
              "src": "4303:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2169,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2161,
                        "src": "4325:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2170,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2163,
                        "src": "4328:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2168,
                      "name": "hsub",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2034,
                      "src": "4320:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4320:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2167,
                  "id": 2172,
                  "nodeType": "Return",
                  "src": "4313:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2174,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wsub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2161,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "4245:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2160,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4245:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2163,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "4256:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2162,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4256:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4244:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2166,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2174,
                  "src": "4294:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2165,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4294:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4293:9:8"
            },
            "scope": 2452,
            "src": "4231:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2200,
              "nodeType": "Block",
              "src": "4417:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2181,
                      "src": "4427:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2186,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2176,
                                        "src": "4445:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2185,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4437:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4437:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2188,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2178,
                                    "src": "4450:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "4437:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2192,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2190,
                                    "name": "WAD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2144,
                                    "src": "4454:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2191,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4460:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4454:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "4437:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2194,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4436:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2195,
                            "name": "WAD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2144,
                            "src": "4465:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "4436:32:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2184,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "4431:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4431:38:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "4427:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2199,
                  "nodeType": "ExpressionStatement",
                  "src": "4427:42:8"
                }
              ]
            },
            "documentation": null,
            "id": 2201,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wmul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2176,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "4357:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2175,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4357:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2178,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "4368:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2177,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4368:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4356:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2181,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2201,
                  "src": "4406:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2180,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4406:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4405:11:8"
            },
            "scope": 2452,
            "src": "4343:133:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2227,
              "nodeType": "Block",
              "src": "4556:57:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2210,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2208,
                      "src": "4566:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2213,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2203,
                                        "src": "4584:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2212,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4576:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4576:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2215,
                                    "name": "WAD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2144,
                                    "src": "4589:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "4576:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2217,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2205,
                                    "src": "4595:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4599:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "4595:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "4576:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2221,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4575:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2222,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2205,
                            "src": "4604:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "4575:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2211,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "4570:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4570:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "4566:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2226,
                  "nodeType": "ExpressionStatement",
                  "src": "4566:40:8"
                }
              ]
            },
            "documentation": null,
            "id": 2228,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wdiv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2203,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2228,
                  "src": "4496:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2202,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4496:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2205,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2228,
                  "src": "4507:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2204,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4507:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4495:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2208,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2228,
                  "src": "4545:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2207,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4545:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4544:11:8"
            },
            "scope": 2452,
            "src": "4482:131:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2242,
              "nodeType": "Block",
              "src": "4691:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2238,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "4713:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2239,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2232,
                        "src": "4716:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2237,
                      "name": "hmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2088,
                      "src": "4708:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4708:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2236,
                  "id": 2241,
                  "nodeType": "Return",
                  "src": "4701:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2243,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2230,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2243,
                  "src": "4633:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2229,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2232,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2243,
                  "src": "4644:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2231,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4632:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2243,
                  "src": "4682:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2234,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4682:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4681:9:8"
            },
            "scope": 2452,
            "src": "4619:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2257,
              "nodeType": "Block",
              "src": "4802:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2253,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2245,
                        "src": "4824:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2254,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2247,
                        "src": "4827:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2252,
                      "name": "hmax",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2105,
                      "src": "4819:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4819:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2251,
                  "id": 2256,
                  "nodeType": "Return",
                  "src": "4812:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2258,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "wmax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2245,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2258,
                  "src": "4744:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2244,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4744:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2247,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2258,
                  "src": "4755:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2246,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4755:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4743:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2250,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2258,
                  "src": "4793:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2249,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4793:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4792:9:8"
            },
            "scope": 2452,
            "src": "4730:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2263,
            "name": "RAY",
            "nodeType": "VariableDeclaration",
            "scope": 2452,
            "src": "4871:31:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 2259,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "4871:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000000000000"
              },
              "id": 2262,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 2260,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4894:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3237",
                "id": 2261,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4900:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_27_by_1",
                  "typeString": "int_const 27"
                },
                "value": "27"
              },
              "src": "4894:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2277,
              "nodeType": "Block",
              "src": "4981:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2273,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2265,
                        "src": "5003:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2274,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2267,
                        "src": "5006:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2272,
                      "name": "hadd",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2013,
                      "src": "4998:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2275,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4998:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2271,
                  "id": 2276,
                  "nodeType": "Return",
                  "src": "4991:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2278,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "radd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2265,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2278,
                  "src": "4923:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2264,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4923:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2267,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2278,
                  "src": "4934:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2266,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4934:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4922:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2270,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2278,
                  "src": "4972:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2269,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4972:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4971:9:8"
            },
            "scope": 2452,
            "src": "4909:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2292,
              "nodeType": "Block",
              "src": "5093:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2288,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2280,
                        "src": "5115:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2289,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2282,
                        "src": "5118:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2287,
                      "name": "hsub",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2034,
                      "src": "5110:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5110:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2286,
                  "id": 2291,
                  "nodeType": "Return",
                  "src": "5103:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2293,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rsub",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2280,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2293,
                  "src": "5035:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2279,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5035:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2282,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2293,
                  "src": "5046:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2281,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5046:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5034:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2285,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2293,
                  "src": "5084:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2284,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5084:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5083:9:8"
            },
            "scope": 2452,
            "src": "5021:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2319,
              "nodeType": "Block",
              "src": "5207:59:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2302,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2300,
                      "src": "5217:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2305,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2295,
                                        "src": "5235:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5227:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2306,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5227:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2307,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2297,
                                    "src": "5240:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "5227:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2309,
                                    "name": "RAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "5244:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5250:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "5244:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "5227:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2313,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5226:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2314,
                            "name": "RAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2263,
                            "src": "5255:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "5226:32:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2303,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "5221:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5221:38:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "5217:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2318,
                  "nodeType": "ExpressionStatement",
                  "src": "5217:42:8"
                }
              ]
            },
            "documentation": null,
            "id": 2320,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rmul",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2295,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2320,
                  "src": "5147:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2294,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5147:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2297,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2320,
                  "src": "5158:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2296,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5158:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5146:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2300,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2320,
                  "src": "5196:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2299,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5196:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5195:11:8"
            },
            "scope": 2452,
            "src": "5133:133:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2346,
              "nodeType": "Block",
              "src": "5346:57:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2329,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2327,
                      "src": "5356:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2332,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2322,
                                        "src": "5374:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2331,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5366:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint256"
                                    },
                                    "id": 2333,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5366:10:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2334,
                                    "name": "RAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "5379:3:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "5366:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 2338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2336,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2324,
                                    "src": "5385:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2337,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5389:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "5385:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "5366:24:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2340,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5365:26:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2341,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2324,
                            "src": "5394:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "5365:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2330,
                        "name": "cast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "5360:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint128_$",
                          "typeString": "function (uint256) view returns (uint128)"
                        }
                      },
                      "id": 2343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5360:36:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "5356:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2345,
                  "nodeType": "ExpressionStatement",
                  "src": "5356:40:8"
                }
              ]
            },
            "documentation": null,
            "id": 2347,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rdiv",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2322,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "5286:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2321,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5286:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2324,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "5297:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2323,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5297:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5285:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2327,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "5335:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2326,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5335:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5334:11:8"
            },
            "scope": 2452,
            "src": "5272:131:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2401,
              "nodeType": "Block",
              "src": "5482:803:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2356,
                      "name": "z",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2354,
                      "src": "6099:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 2361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 2359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2357,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2351,
                            "src": "6103:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 2358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6107:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "6103:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6112:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6103:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "id": 2363,
                        "name": "RAY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2263,
                        "src": "6120:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "id": 2364,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "6103:20:8",
                      "trueExpression": {
                        "argumentTypes": null,
                        "id": 2362,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2349,
                        "src": "6116:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "6099:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 2366,
                  "nodeType": "ExpressionStatement",
                  "src": "6099:24:8"
                },
                {
                  "body": {
                    "id": 2399,
                    "nodeType": "Block",
                    "src": "6163:116:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2378,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2349,
                            "src": "6177:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2349,
                                "src": "6186:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2381,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2349,
                                "src": "6189:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 2379,
                              "name": "rmul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2320,
                              "src": "6181:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                "typeString": "function (uint128,uint128) view returns (uint128)"
                              }
                            },
                            "id": 2382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6181:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "6177:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 2384,
                        "nodeType": "ExpressionStatement",
                        "src": "6177:14:8"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 2389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 2387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2385,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2351,
                              "src": "6210:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 2386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6214:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "6210:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6219:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6210:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2398,
                        "nodeType": "IfStatement",
                        "src": "6206:63:8",
                        "trueBody": {
                          "id": 2397,
                          "nodeType": "Block",
                          "src": "6222:47:8",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2390,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "6240:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2392,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2354,
                                      "src": "6249:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2393,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2349,
                                      "src": "6252:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 2391,
                                    "name": "rmul",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2320,
                                    "src": "6244:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                      "typeString": "function (uint128,uint128) view returns (uint128)"
                                    }
                                  },
                                  "id": 2394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6244:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "6240:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 2396,
                              "nodeType": "ExpressionStatement",
                              "src": "6240:14:8"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "id": 2373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2371,
                      "name": "n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2351,
                      "src": "6147:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6152:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6147:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2400,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2367,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2351,
                        "src": "6139:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "/=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6144:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "6139:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 2370,
                    "nodeType": "ExpressionStatement",
                    "src": "6139:6:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2374,
                        "name": "n",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2351,
                        "src": "6155:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "/=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6160:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "6155:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 2377,
                    "nodeType": "ExpressionStatement",
                    "src": "6155:6:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "6134:145:8"
                }
              ]
            },
            "documentation": null,
            "id": 2402,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rpow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2349,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "5423:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5423:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2351,
                  "name": "n",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "5434:8:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2350,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "5434:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5422:21:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2354,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "5471:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2353,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5471:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5470:11:8"
            },
            "scope": 2452,
            "src": "5409:876:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2416,
              "nodeType": "Block",
              "src": "6363:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2412,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2404,
                        "src": "6385:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2413,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2406,
                        "src": "6388:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2411,
                      "name": "hmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2088,
                      "src": "6380:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6380:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2410,
                  "id": 2415,
                  "nodeType": "Return",
                  "src": "6373:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2417,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2404,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2417,
                  "src": "6305:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2403,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6305:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2406,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2417,
                  "src": "6316:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2405,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6316:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6304:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2409,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2417,
                  "src": "6354:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2408,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6354:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6353:9:8"
            },
            "scope": 2452,
            "src": "6291:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2431,
              "nodeType": "Block",
              "src": "6474:34:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2427,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2419,
                        "src": "6496:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2428,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2421,
                        "src": "6499:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      ],
                      "id": 2426,
                      "name": "hmax",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2105,
                      "src": "6491:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,uint128) view returns (uint128)"
                      }
                    },
                    "id": 2429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6491:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 2425,
                  "id": 2430,
                  "nodeType": "Return",
                  "src": "6484:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2432,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rmax",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2419,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "6416:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2418,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6416:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2421,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "6427:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2420,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6427:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6415:22:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2424,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "6465:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2423,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6465:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6464:9:8"
            },
            "scope": 2452,
            "src": "6402:106:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2450,
              "nodeType": "Block",
              "src": "6577:46:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2440,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2437,
                                "src": "6595:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2442,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2434,
                                    "src": "6607:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6599:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": "uint128"
                                },
                                "id": 2443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6599:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "6595:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 2445,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6594:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2446,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2434,
                          "src": "6614:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6594:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2439,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23120,
                      "src": "6587:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6587:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2449,
                  "nodeType": "ExpressionStatement",
                  "src": "6587:29:8"
                }
              ]
            },
            "documentation": null,
            "id": 2451,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "cast",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2434,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2451,
                  "src": "6528:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6528:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6527:11:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2437,
                  "name": "z",
                  "nodeType": "VariableDeclaration",
                  "scope": 2451,
                  "src": "6566:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2436,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6566:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6565:11:8"
            },
            "scope": 2452,
            "src": "6514:109:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2912,
        "src": "2258:4368:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2453,
              "name": "DSAuth",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1840,
              "src": "6648:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSAuth_$1840",
                "typeString": "contract DSAuth"
              }
            },
            "id": 2454,
            "nodeType": "InheritanceSpecifier",
            "src": "6648:6:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2455,
              "name": "DSNote",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1879,
              "src": "6656:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSNote_$1879",
                "typeString": "contract DSNote"
              }
            },
            "id": 2456,
            "nodeType": "InheritanceSpecifier",
            "src": "6656:6:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2457,
              "name": "DSMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2452,
              "src": "6664:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSMath_$2452",
                "typeString": "contract DSMath"
              }
            },
            "id": 2458,
            "nodeType": "InheritanceSpecifier",
            "src": "6664:6:8"
          }
        ],
        "contractDependencies": [
          1707,
          1840,
          1879,
          2452
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2459,
        "linearizedBaseContracts": [
          2459,
          2452,
          1879,
          1840,
          1707
        ],
        "name": "DSThing",
        "nodeType": "ContractDefinition",
        "nodes": [],
        "scope": 2912,
        "src": "6628:46:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2460,
              "name": "DSThing",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2459,
              "src": "6696:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSThing_$2459",
                "typeString": "contract DSThing"
              }
            },
            "id": 2461,
            "nodeType": "InheritanceSpecifier",
            "src": "6696:7:8"
          }
        ],
        "contractDependencies": [
          1707,
          1840,
          1879,
          2452,
          2459
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2525,
        "linearizedBaseContracts": [
          2525,
          2459,
          2452,
          1879,
          1840,
          1707
        ],
        "name": "DSValue",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2463,
            "name": "has",
            "nodeType": "VariableDeclaration",
            "scope": 2525,
            "src": "6710:11:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 2462,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "6710:4:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2465,
            "name": "val",
            "nodeType": "VariableDeclaration",
            "scope": 2525,
            "src": "6727:11:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2464,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "6727:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2476,
              "nodeType": "Block",
              "src": "6793:33:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2472,
                        "name": "val",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "6811:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2473,
                        "name": "has",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2463,
                        "src": "6815:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2474,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6810:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                      "typeString": "tuple(bytes32,bool)"
                    }
                  },
                  "functionReturnParameters": 2471,
                  "id": 2475,
                  "nodeType": "Return",
                  "src": "6803:16:8"
                }
              ]
            },
            "documentation": null,
            "id": 2477,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "peek",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6757:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2468,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2477,
                  "src": "6778:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2467,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6778:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2470,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2477,
                  "src": "6787:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2469,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6787:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6777:15:8"
            },
            "scope": 2525,
            "src": "6744:82:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2493,
              "nodeType": "Block",
              "src": "6874:81:8",
              "statements": [
                {
                  "assignments": [
                    2482,
                    2483
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2482,
                      "name": "wut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2494,
                      "src": "6889:3:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2483,
                      "name": "has",
                      "nodeType": "VariableDeclaration",
                      "scope": 2494,
                      "src": "6894:3:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2486,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2484,
                      "name": "peek",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2477,
                      "src": "6901:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$_t_bool_$",
                        "typeString": "function () view returns (bytes32,bool)"
                      }
                    },
                    "id": 2485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6901:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                      "typeString": "tuple(bytes32,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6884:23:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2488,
                        "name": "has",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2483,
                        "src": "6924:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2487,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "6917:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 2489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6917:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2490,
                  "nodeType": "ExpressionStatement",
                  "src": "6917:11:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2491,
                    "name": "wut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2482,
                    "src": "6945:3:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2481,
                  "id": 2492,
                  "nodeType": "Return",
                  "src": "6938:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 2494,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6844:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2480,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2494,
                  "src": "6865:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2479,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6865:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6864:9:8"
            },
            "scope": 2525,
            "src": "6831:124:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2511,
              "nodeType": "Block",
              "src": "6997:46:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2503,
                      "name": "val",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2465,
                      "src": "7007:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2504,
                      "name": "wut",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2496,
                      "src": "7013:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7007:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2506,
                  "nodeType": "ExpressionStatement",
                  "src": "7007:9:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2507,
                      "name": "has",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2463,
                      "src": "7026:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7032:4:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "7026:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2510,
                  "nodeType": "ExpressionStatement",
                  "src": "7026:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 2512,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2499,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2498,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "6987:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6987:4:8"
              },
              {
                "arguments": null,
                "id": 2501,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2500,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "6992:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6992:4:8"
              }
            ],
            "name": "poke",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2496,
                  "name": "wut",
                  "nodeType": "VariableDeclaration",
                  "scope": 2512,
                  "src": "6974:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2495,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6974:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6973:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6997:0:8"
            },
            "scope": 2525,
            "src": "6960:83:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2523,
              "nodeType": "Block",
              "src": "7074:47:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2519,
                      "name": "has",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2463,
                      "src": "7103:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 2520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7109:5:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "7103:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2522,
                  "nodeType": "ExpressionStatement",
                  "src": "7103:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 2524,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2515,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2514,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7064:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7064:4:8"
              },
              {
                "arguments": null,
                "id": 2517,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2516,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7069:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7069:4:8"
              }
            ],
            "name": "void",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7061:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7074:0:8"
            },
            "scope": 2525,
            "src": "7048:73:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2912,
        "src": "6676:447:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2526,
              "name": "DSValue",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2525,
              "src": "7148:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DSValue_$2525",
                "typeString": "contract DSValue"
              }
            },
            "id": 2527,
            "nodeType": "InheritanceSpecifier",
            "src": "7148:7:8"
          }
        ],
        "contractDependencies": [
          1707,
          1840,
          1879,
          2452,
          2459,
          2525
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2911,
        "linearizedBaseContracts": [
          2911,
          2525,
          2459,
          2452,
          1879,
          1840,
          1707
        ],
        "name": "Medianizer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2531,
            "name": "values",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7162:42:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
              "typeString": "mapping(bytes12 => address)"
            },
            "typeName": {
              "id": 2530,
              "keyType": {
                "id": 2528,
                "name": "bytes12",
                "nodeType": "ElementaryTypeName",
                "src": "7171:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes12",
                  "typeString": "bytes12"
                }
              },
              "nodeType": "Mapping",
              "src": "7162:28:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                "typeString": "mapping(bytes12 => address)"
              },
              "valueType": {
                "id": 2529,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "7182:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2535,
            "name": "indexes",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7210:43:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
              "typeString": "mapping(address => bytes12)"
            },
            "typeName": {
              "id": 2534,
              "keyType": {
                "id": 2532,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "7219:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "7210:28:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                "typeString": "mapping(address => bytes12)"
              },
              "valueType": {
                "id": 2533,
                "name": "bytes12",
                "nodeType": "ElementaryTypeName",
                "src": "7230:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes12",
                  "typeString": "bytes12"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2538,
            "name": "next",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7259:25:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes12",
              "typeString": "bytes12"
            },
            "typeName": {
              "id": 2536,
              "name": "bytes12",
              "nodeType": "ElementaryTypeName",
              "src": "7259:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes12",
                "typeString": "bytes12"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831",
              "id": 2537,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7281:3:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "0x1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2541,
            "name": "min",
            "nodeType": "VariableDeclaration",
            "scope": 2911,
            "src": "7291:23:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint96",
              "typeString": "uint96"
            },
            "typeName": {
              "id": 2539,
              "name": "uint96",
              "nodeType": "ElementaryTypeName",
              "src": "7291:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint96",
                "typeString": "uint96"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307831",
              "id": 2540,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7311:3:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "0x1"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 2573,
              "nodeType": "Block",
              "src": "7352:137:8",
              "statements": [
                {
                  "assignments": [
                    2549
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2549,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2574,
                      "src": "7362:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      },
                      "typeName": {
                        "id": 2548,
                        "name": "bytes12",
                        "nodeType": "ElementaryTypeName",
                        "src": "7362:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2557,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 2555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2552,
                              "name": "next",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2538,
                              "src": "7394:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            ],
                            "id": 2551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7387:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": "uint96"
                          },
                          "id": 2553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7387:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7402:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "7387:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      ],
                      "id": 2550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7379:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes12_$",
                        "typeString": "type(bytes12)"
                      },
                      "typeName": "bytes12"
                    },
                    "id": 2556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7379:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7362:42:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        "id": 2561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2559,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2549,
                          "src": "7421:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 2560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7431:3:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        },
                        "src": "7421:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2558,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1839,
                      "src": "7414:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 2562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7414:21:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2563,
                  "nodeType": "ExpressionStatement",
                  "src": "7414:21:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2565,
                        "name": "next",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2538,
                        "src": "7449:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "wat",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "7455:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2564,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2574,
                        2627
                      ],
                      "referencedDeclaration": 2627,
                      "src": "7445:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes12_$_t_address_$returns$__$",
                        "typeString": "function (bytes12,address)"
                      }
                    },
                    "id": 2567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7445:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2568,
                  "nodeType": "ExpressionStatement",
                  "src": "7445:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2569,
                      "name": "next",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2538,
                      "src": "7469:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2570,
                      "name": "nextId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2549,
                      "src": "7476:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "src": "7469:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "id": 2572,
                  "nodeType": "ExpressionStatement",
                  "src": "7469:13:8"
                }
              ]
            },
            "documentation": null,
            "id": 2574,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2546,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2545,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7347:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7347:4:8"
              }
            ],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2543,
                  "name": "wat",
                  "nodeType": "VariableDeclaration",
                  "scope": 2574,
                  "src": "7334:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7333:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7352:0:8"
            },
            "scope": 2911,
            "src": "7321:168:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2626,
              "nodeType": "Block",
              "src": "7544:289:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    },
                    "id": 2587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2585,
                      "name": "pos",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2576,
                      "src": "7558:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307830",
                      "id": 2586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7565:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "7558:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2589,
                  "nodeType": "IfStatement",
                  "src": "7554:21:8",
                  "trueBody": {
                    "id": 2588,
                    "nodeType": "Throw",
                    "src": "7570:5:8"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2590,
                        "name": "wat",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2578,
                        "src": "7590:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7597:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "7590:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      },
                      "id": 2597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2593,
                          "name": "indexes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2535,
                          "src": "7602:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                            "typeString": "mapping(address => bytes12)"
                          }
                        },
                        "id": 2595,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2594,
                          "name": "wat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2578,
                          "src": "7610:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7602:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7618:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "7602:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7590:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2600,
                  "nodeType": "IfStatement",
                  "src": "7586:40:8",
                  "trueBody": {
                    "id": 2599,
                    "nodeType": "Throw",
                    "src": "7621:5:8"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2601,
                        "name": "indexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2535,
                        "src": "7637:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                          "typeString": "mapping(address => bytes12)"
                        }
                      },
                      "id": 2605,
                      "indexExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2602,
                          "name": "values",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2531,
                          "src": "7645:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                            "typeString": "mapping(bytes12 => address)"
                          }
                        },
                        "id": 2604,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2603,
                          "name": "pos",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2576,
                          "src": "7652:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7645:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7637:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7660:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7637:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "id": 2608,
                  "nodeType": "ExpressionStatement",
                  "src": "7637:24:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2609,
                      "name": "wat",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2578,
                      "src": "7746:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7753:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7746:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2619,
                  "nodeType": "IfStatement",
                  "src": "7742:57:8",
                  "trueBody": {
                    "id": 2618,
                    "nodeType": "Block",
                    "src": "7756:43:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2612,
                              "name": "indexes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2535,
                              "src": "7770:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                                "typeString": "mapping(address => bytes12)"
                              }
                            },
                            "id": 2614,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2613,
                              "name": "wat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2578,
                              "src": "7778:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7770:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2615,
                            "name": "pos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2576,
                            "src": "7785:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          },
                          "src": "7770:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "id": 2617,
                        "nodeType": "ExpressionStatement",
                        "src": "7770:18:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2620,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2531,
                        "src": "7809:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                          "typeString": "mapping(bytes12 => address)"
                        }
                      },
                      "id": 2622,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2621,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2576,
                        "src": "7816:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7809:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2623,
                      "name": "wat",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2578,
                      "src": "7823:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7809:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2625,
                  "nodeType": "ExpressionStatement",
                  "src": "7809:17:8"
                }
              ]
            },
            "documentation": null,
            "id": 2627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2581,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2580,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7534:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7534:4:8"
              },
              {
                "arguments": null,
                "id": 2583,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2582,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7539:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7539:4:8"
              }
            ],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2576,
                  "name": "pos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2627,
                  "src": "7508:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 2575,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "7508:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2578,
                  "name": "wat",
                  "nodeType": "VariableDeclaration",
                  "scope": 2627,
                  "src": "7521:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2577,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7521:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7507:26:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2584,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7544:0:8"
            },
            "scope": 2911,
            "src": "7495:338:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2645,
              "nodeType": "Block",
              "src": "7878:59:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2636,
                      "name": "min_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "7892:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307830",
                      "id": 2637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7900:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "7892:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2640,
                  "nodeType": "IfStatement",
                  "src": "7888:22:8",
                  "trueBody": {
                    "id": 2639,
                    "nodeType": "Throw",
                    "src": "7905:5:8"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2641,
                      "name": "min",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2541,
                        1975
                      ],
                      "referencedDeclaration": 2541,
                      "src": "7920:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2642,
                      "name": "min_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "7926:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "7920:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "id": 2644,
                  "nodeType": "ExpressionStatement",
                  "src": "7920:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 2646,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2632,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2631,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7868:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7868:4:8"
              },
              {
                "arguments": null,
                "id": 2634,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2633,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7873:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7873:4:8"
              }
            ],
            "name": "setMin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2629,
                  "name": "min_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2646,
                  "src": "7855:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 2628,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "7855:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7854:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2635,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7878:0:8"
            },
            "scope": 2911,
            "src": "7839:98:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2664,
              "nodeType": "Block",
              "src": "7985:62:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    },
                    "id": 2657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2655,
                      "name": "next_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "7999:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307830",
                      "id": 2656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8008:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "7999:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2659,
                  "nodeType": "IfStatement",
                  "src": "7995:23:8",
                  "trueBody": {
                    "id": 2658,
                    "nodeType": "Throw",
                    "src": "8013:5:8"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2660,
                      "name": "next",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2538,
                      "src": "8028:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2661,
                      "name": "next_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "8035:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes12",
                        "typeString": "bytes12"
                      }
                    },
                    "src": "8028:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "id": 2663,
                  "nodeType": "ExpressionStatement",
                  "src": "8028:12:8"
                }
              ]
            },
            "documentation": null,
            "id": 2665,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2651,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2650,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "7975:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7975:4:8"
              },
              {
                "arguments": null,
                "id": 2653,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2652,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1772,
                  "src": "7980:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7980:4:8"
              }
            ],
            "name": "setNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2648,
                  "name": "next_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2665,
                  "src": "7960:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 2647,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "7960:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7959:15:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7985:0:8"
            },
            "scope": 2911,
            "src": "7943:104:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2675,
              "nodeType": "Block",
              "src": "8081:28:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2671,
                        "name": "pos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2667,
                        "src": "8095:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8100:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2670,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2574,
                        2627
                      ],
                      "referencedDeclaration": 2627,
                      "src": "8091:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes12_$_t_address_$returns$__$",
                        "typeString": "function (bytes12,address)"
                      }
                    },
                    "id": 2673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8091:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2674,
                  "nodeType": "ExpressionStatement",
                  "src": "8091:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 2676,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "unset",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2667,
                  "name": "pos",
                  "nodeType": "VariableDeclaration",
                  "scope": 2676,
                  "src": "8068:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 2666,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "8068:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8067:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2669,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8081:0:8"
            },
            "scope": 2911,
            "src": "8053:56:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2688,
              "nodeType": "Block",
              "src": "8143:37:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2682,
                          "name": "indexes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2535,
                          "src": "8157:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes12_$",
                            "typeString": "mapping(address => bytes12)"
                          }
                        },
                        "id": 2684,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2683,
                          "name": "wat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2678,
                          "src": "8165:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8157:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8171:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2681,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2574,
                        2627
                      ],
                      "referencedDeclaration": 2627,
                      "src": "8153:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes12_$_t_address_$returns$__$",
                        "typeString": "function (bytes12,address)"
                      }
                    },
                    "id": 2686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8153:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2687,
                  "nodeType": "ExpressionStatement",
                  "src": "8153:20:8"
                }
              ]
            },
            "documentation": null,
            "id": 2689,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "unset",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2678,
                  "name": "wat",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "8130:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8130:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8129:13:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8143:0:8"
            },
            "scope": 2911,
            "src": "8115:65:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2696,
              "nodeType": "Block",
              "src": "8202:24:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8217:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2692,
                      "name": "poke",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2697,
                        2712
                      ],
                      "referencedDeclaration": 2712,
                      "src": "8212:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8212:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2695,
                  "nodeType": "ExpressionStatement",
                  "src": "8212:7:8"
                }
              ]
            },
            "documentation": null,
            "id": 2697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "poke",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2690,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8199:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8202:0:8"
            },
            "scope": 2911,
            "src": "8186:40:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2711,
              "nodeType": "Block",
              "src": "8260:39:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2704,
                          "name": "val",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2465,
                          "src": "8271:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2705,
                          "name": "has",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2463,
                          "src": "8276:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2706,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "8270:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                        "typeString": "tuple(bytes32,bool)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2707,
                        "name": "compute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2910,
                        "src": "8283:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$_t_bool_$",
                          "typeString": "function () view returns (bytes32,bool)"
                        }
                      },
                      "id": 2708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8283:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                        "typeString": "tuple(bytes32,bool)"
                      }
                    },
                    "src": "8270:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2710,
                  "nodeType": "ExpressionStatement",
                  "src": "8270:22:8"
                }
              ]
            },
            "documentation": null,
            "id": 2712,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2702,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2701,
                  "name": "note",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1878,
                  "src": "8255:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8255:4:8"
              }
            ],
            "name": "poke",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2699,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2712,
                  "src": "8246:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2698,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8246:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8245:9:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2703,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8260:0:8"
            },
            "scope": 2911,
            "src": "8232:67:8",
            "stateMutability": "nonpayable",
            "superFunction": 2512,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2909,
              "nodeType": "Block",
              "src": "8357:1195:8",
              "statements": [
                {
                  "assignments": [
                    2722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2722,
                      "name": "wuts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2910,
                      "src": "8367:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2720,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8367:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2721,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8367:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2732,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "id": 2730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2727,
                              "name": "next",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2538,
                              "src": "8412:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            ],
                            "id": 2726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8405:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": "uint96"
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8405:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 2729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8420:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "8405:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      ],
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "8391:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2723,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8395:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2724,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8395:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8391:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8367:55:8"
                },
                {
                  "assignments": [
                    2734
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2734,
                      "name": "ctr",
                      "nodeType": "VariableDeclaration",
                      "scope": 2910,
                      "src": "8432:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 2733,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "8432:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2736,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8445:1:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8432:14:8"
                },
                {
                  "body": {
                    "id": 2838,
                    "nodeType": "Block",
                    "src": "8498:682:8",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2749,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2531,
                              "src": "8516:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                                "typeString": "mapping(bytes12 => address)"
                              }
                            },
                            "id": 2753,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2751,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2738,
                                  "src": "8531:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                ],
                                "id": 2750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8523:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes12_$",
                                  "typeString": "type(bytes12)"
                                },
                                "typeName": "bytes12"
                              },
                              "id": 2752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8523:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes12",
                                "typeString": "bytes12"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8516:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8538:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8516:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2837,
                        "nodeType": "IfStatement",
                        "src": "8512:658:8",
                        "trueBody": {
                          "id": 2836,
                          "nodeType": "Block",
                          "src": "8541:629:8",
                          "statements": [
                            {
                              "assignments": [
                                2756,
                                2757
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2756,
                                  "name": "wut",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2910,
                                  "src": "8564:3:8",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": null,
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 2757,
                                  "name": "wuz",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2910,
                                  "src": "8569:3:8",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": null,
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2767,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2759,
                                          "name": "values",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2531,
                                          "src": "8584:6:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes12_$_t_address_$",
                                            "typeString": "mapping(bytes12 => address)"
                                          }
                                        },
                                        "id": 2763,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2761,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2738,
                                              "src": "8599:1:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            ],
                                            "id": 2760,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "8591:7:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes12_$",
                                              "typeString": "type(bytes12)"
                                            },
                                            "typeName": "bytes12"
                                          },
                                          "id": 2762,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8591:10:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes12",
                                            "typeString": "bytes12"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8584:18:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2758,
                                      "name": "DSValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2525,
                                      "src": "8576:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DSValue_$2525_$",
                                        "typeString": "type(contract DSValue)"
                                      }
                                    },
                                    "id": 2764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8576:27:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DSValue_$2525",
                                      "typeString": "contract DSValue"
                                    }
                                  },
                                  "id": 2765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "peek",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2477,
                                  "src": "8576:32:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$_t_bool_$",
                                    "typeString": "function () view external returns (bytes32,bool)"
                                  }
                                },
                                "id": 2766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8576:34:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                                  "typeString": "tuple(bytes32,bool)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8559:51:8"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 2768,
                                "name": "wuz",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2757,
                                "src": "8632:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2835,
                              "nodeType": "IfStatement",
                              "src": "8628:528:8",
                              "trueBody": {
                                "id": 2834,
                                "nodeType": "Block",
                                "src": "8637:519:8",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 2779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        },
                                        "id": 2771,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2769,
                                          "name": "ctr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2734,
                                          "src": "8663:3:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 2770,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8670:1:8",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "8663:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "id": 2778,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2772,
                                          "name": "wut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2756,
                                          "src": "8675:3:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2773,
                                            "name": "wuts",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2722,
                                            "src": "8682:4:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                              "typeString": "bytes32[] memory"
                                            }
                                          },
                                          "id": 2777,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            },
                                            "id": 2776,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 2774,
                                              "name": "ctr",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2734,
                                              "src": "8687:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 2775,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8693:1:8",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "8687:7:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "8682:13:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "src": "8675:20:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "8663:32:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 2829,
                                      "nodeType": "Block",
                                      "src": "8767:344:8",
                                      "statements": [
                                        {
                                          "assignments": [
                                            2788
                                          ],
                                          "declarations": [
                                            {
                                              "constant": false,
                                              "id": 2788,
                                              "name": "j",
                                              "nodeType": "VariableDeclaration",
                                              "scope": 2910,
                                              "src": "8793:8:8",
                                              "stateVariable": false,
                                              "storageLocation": "default",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              },
                                              "typeName": {
                                                "id": 2787,
                                                "name": "uint96",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8793:6:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "value": null,
                                              "visibility": "internal"
                                            }
                                          ],
                                          "id": 2790,
                                          "initialValue": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 2789,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8804:1:8",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "nodeType": "VariableDeclarationStatement",
                                          "src": "8793:12:8"
                                        },
                                        {
                                          "body": {
                                            "id": 2799,
                                            "nodeType": "Block",
                                            "src": "8854:60:8",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2797,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "8884:3:8",
                                                  "subExpression": {
                                                    "argumentTypes": null,
                                                    "id": 2796,
                                                    "name": "j",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2788,
                                                    "src": "8884:1:8",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint96",
                                                      "typeString": "uint96"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint96",
                                                    "typeString": "uint96"
                                                  }
                                                },
                                                "id": 2798,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8884:3:8"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            "id": 2795,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 2791,
                                              "name": "wut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2756,
                                              "src": "8838:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2792,
                                                "name": "wuts",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2722,
                                                "src": "8845:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 2794,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2793,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2788,
                                                "src": "8850:1:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "8845:7:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "8838:14:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 2800,
                                          "nodeType": "WhileStatement",
                                          "src": "8831:83:8"
                                        },
                                        {
                                          "body": {
                                            "id": 2821,
                                            "nodeType": "Block",
                                            "src": "8972:78:8",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2819,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2811,
                                                      "name": "wuts",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2722,
                                                      "src": "9002:4:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 2813,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2812,
                                                      "name": "k",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2802,
                                                      "src": "9007:1:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint96",
                                                        "typeString": "uint96"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9002:7:8",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 2814,
                                                      "name": "wuts",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2722,
                                                      "src": "9012:4:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 2818,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint96",
                                                        "typeString": "uint96"
                                                      },
                                                      "id": 2817,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 2815,
                                                        "name": "k",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2802,
                                                        "src": "9017:1:8",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint96",
                                                          "typeString": "uint96"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "-",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 2816,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "9021:1:8",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "9017:5:8",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint96",
                                                        "typeString": "uint96"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9012:11:8",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes32",
                                                      "typeString": "bytes32"
                                                    }
                                                  },
                                                  "src": "9002:21:8",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                },
                                                "id": 2820,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9002:21:8"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint96",
                                              "typeString": "uint96"
                                            },
                                            "id": 2807,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 2805,
                                              "name": "k",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2802,
                                              "src": "8960:1:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 2806,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2788,
                                              "src": "8964:1:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "src": "8960:5:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 2822,
                                          "initializationExpression": {
                                            "assignments": [
                                              2802
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 2802,
                                                "name": "k",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2910,
                                                "src": "8944:8:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                },
                                                "typeName": {
                                                  "id": 2801,
                                                  "name": "uint96",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "8944:6:8",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint96",
                                                    "typeString": "uint96"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 2804,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "id": 2803,
                                              "name": "ctr",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2734,
                                              "src": "8955:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "8944:14:8"
                                          },
                                          "loopExpression": {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2809,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "--",
                                              "prefix": false,
                                              "src": "8967:3:8",
                                              "subExpression": {
                                                "argumentTypes": null,
                                                "id": 2808,
                                                "name": "k",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2802,
                                                "src": "8967:1:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "id": 2810,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8967:3:8"
                                          },
                                          "nodeType": "ForStatement",
                                          "src": "8939:111:8"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2827,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2823,
                                                "name": "wuts",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2722,
                                                "src": "9075:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 2825,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2824,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2788,
                                                "src": "9080:1:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "9075:7:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 2826,
                                              "name": "wut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2756,
                                              "src": "9085:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "9075:13:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "id": 2828,
                                          "nodeType": "ExpressionStatement",
                                          "src": "9075:13:8"
                                        }
                                      ]
                                    },
                                    "id": 2830,
                                    "nodeType": "IfStatement",
                                    "src": "8659:452:8",
                                    "trueBody": {
                                      "id": 2786,
                                      "nodeType": "Block",
                                      "src": "8697:64:8",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2784,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2780,
                                                "name": "wuts",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2722,
                                                "src": "8723:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 2782,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2781,
                                                "name": "ctr",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2734,
                                                "src": "8728:3:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint96",
                                                  "typeString": "uint96"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "8723:9:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 2783,
                                              "name": "wut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2756,
                                              "src": "8735:3:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "8723:15:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "id": 2785,
                                          "nodeType": "ExpressionStatement",
                                          "src": "8723:15:8"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2832,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "9132:5:8",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 2831,
                                        "name": "ctr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2734,
                                        "src": "9132:3:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "id": 2833,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9132:5:8"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2745,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2741,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2738,
                      "src": "8475:1:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2743,
                          "name": "next",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2538,
                          "src": "8486:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        ],
                        "id": 2742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8479:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint96_$",
                          "typeString": "type(uint96)"
                        },
                        "typeName": "uint96"
                      },
                      "id": 2744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8479:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "8475:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2839,
                  "initializationExpression": {
                    "assignments": [
                      2738
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2738,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2910,
                        "src": "8461:8:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 2737,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "8461:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2740,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8472:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8461:12:8"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8493:3:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2746,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2738,
                        "src": "8493:1:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "id": 2748,
                    "nodeType": "ExpressionStatement",
                    "src": "8493:3:8"
                  },
                  "nodeType": "ForStatement",
                  "src": "8456:724:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2840,
                      "name": "ctr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2734,
                      "src": "9194:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2841,
                      "name": "min",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2541,
                        1975
                      ],
                      "referencedDeclaration": 2541,
                      "src": "9200:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "9194:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2847,
                  "nodeType": "IfStatement",
                  "src": "9190:34:8",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2843,
                          "name": "val",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2465,
                          "src": "9213:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9218:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 2845,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9212:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                        "typeString": "tuple(bytes32,bool)"
                      }
                    },
                    "functionReturnParameters": 2718,
                    "id": 2846,
                    "nodeType": "Return",
                    "src": "9205:19:8"
                  }
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2849,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 2910,
                      "src": "9235:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2848,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9235:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2850,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9235:13:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    },
                    "id": 2855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "id": 2853,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2851,
                        "name": "ctr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2734,
                        "src": "9262:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "%",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 2852,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9268:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "9262:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9273:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9262:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2903,
                    "nodeType": "Block",
                    "src": "9463:52:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2892,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2849,
                            "src": "9477:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2893,
                              "name": "wuts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2722,
                              "src": "9485:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 2900,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 2899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    },
                                    "id": 2896,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2894,
                                      "name": "ctr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2734,
                                      "src": "9491:3:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9497:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "9491:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "id": 2897,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9490:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 2898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9502:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "9490:13:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9485:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9477:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2902,
                        "nodeType": "ExpressionStatement",
                        "src": "9477:27:8"
                      }
                    ]
                  },
                  "id": 2904,
                  "nodeType": "IfStatement",
                  "src": "9258:257:8",
                  "trueBody": {
                    "id": 2891,
                    "nodeType": "Block",
                    "src": "9276:181:8",
                    "statements": [
                      {
                        "assignments": [
                          2857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2857,
                            "name": "val1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2910,
                            "src": "9290:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 2856,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "9290:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2868,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2859,
                                "name": "wuts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2722,
                                "src": "9313:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 2866,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 2865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      },
                                      "id": 2862,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2860,
                                        "name": "ctr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2734,
                                        "src": "9319:3:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint96",
                                          "typeString": "uint96"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2861,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9325:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "9319:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint96",
                                        "typeString": "uint96"
                                      }
                                    }
                                  ],
                                  "id": 2863,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9318:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9330:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9318:13:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9313:19:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9305:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          "id": 2867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9305:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9290:43:8"
                      },
                      {
                        "assignments": [
                          2870
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2870,
                            "name": "val2",
                            "nodeType": "VariableDeclaration",
                            "scope": 2910,
                            "src": "9347:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 2869,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "9347:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2878,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2872,
                                "name": "wuts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2722,
                                "src": "9370:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 2876,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                },
                                "id": 2875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2873,
                                  "name": "ctr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2734,
                                  "src": "9375:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 2874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9381:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "9375:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9370:13:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9362:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": "uint128"
                          },
                          "id": 2877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9362:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9347:37:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2879,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2849,
                            "src": "9398:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2883,
                                        "name": "val1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2857,
                                        "src": "9424:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2884,
                                        "name": "val2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2870,
                                        "src": "9430:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 2882,
                                      "name": "hadd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2013,
                                      "src": "9419:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                        "typeString": "function (uint128,uint128) view returns (uint128)"
                                      }
                                    },
                                    "id": 2885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9419:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9437:7:8",
                                    "subdenomination": "ether",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2000000000000000000_by_1",
                                      "typeString": "int_const 2000000000000000000"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_2000000000000000000_by_1",
                                      "typeString": "int_const 2000000000000000000"
                                    }
                                  ],
                                  "id": 2881,
                                  "name": "wdiv",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2228,
                                  "src": "9414:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint128_$_t_uint128_$returns$_t_uint128_$",
                                    "typeString": "function (uint128,uint128) view returns (uint128)"
                                  }
                                },
                                "id": 2887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9414:31:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 2880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9406:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 2888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9406:40:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9398:48:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2890,
                        "nodeType": "ExpressionStatement",
                        "src": "9398:48:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2905,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2849,
                        "src": "9533:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9540:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "id": 2907,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9532:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bool_$",
                      "typeString": "tuple(bytes32,bool)"
                    }
                  },
                  "functionReturnParameters": 2718,
                  "id": 2908,
                  "nodeType": "Return",
                  "src": "9525:20:8"
                }
              ]
            },
            "documentation": null,
            "id": 2910,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "compute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2713,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8321:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 2718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2715,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2910,
                  "src": "8342:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8342:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2717,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2910,
                  "src": "8351:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2716,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8351:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8341:15:8"
            },
            "scope": 2911,
            "src": "8305:1247:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2912,
        "src": "7125:2430:8"
      }
    ],
    "src": "418:9138:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:11.983Z"
}