{
  "contractName": "RRUtils",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.7.4+commit.3f05b770\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"RRUtils is a library that provides utilities for parsing DNS resource records.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\":\"RRUtils\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0xa9ac824902ab6aaf6883432cd6f2a853186fcce568d63d04fa8143df6c5d6ebd\",\"urls\":[\"bzz-raw://99a06f0895b90759b92067c86b0eba1823bb6180ef4f3e3ed18abef2ec43eab9\",\"dweb:/ipfs/QmQVmiDPkuXZq94G6Mc3TChVrYzvEk3gbGLVoJrVKKf4uz\"]},\"@ensdomains/dnssec-oracle/contracts/BytesUtils.sol\":{\"keccak256\":\"0x17b0123a981825ac9445ec82c8e20288321b27139518ba1f81c4cbd06f1312ab\",\"urls\":[\"bzz-raw://fe03e00240c645751873f38f56cc3db12d19a82538a0f0e9648ccfc23e8a715d\",\"dweb:/ipfs/QmbT7Q7GUgkZFY5gA4RxhWg3anPKiH9EZoM6HWBKDkK7dp\"]},\"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\":{\"keccak256\":\"0x52cca336743e65b57ce01a30bbc7ed8523758853ab7d35db57a6f40d4a3bf892\",\"urls\":[\"bzz-raw://feb1f75afcea14258289d466c9bfcb4cf648858791ff1780b5d3a4191e4158e2\",\"dweb:/ipfs/QmTc4vx6sEx9jW3Efu1QAFQQ7JTarfMDYwgv4FzZoxTWUx\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5a1ebd34c31680fa4b5fd9611c94299ca39238fce851497e1d430295ed55bcc64736f6c63430007040033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5a1ebd34c31680fa4b5fd9611c94299ca39238fce851497e1d430295ed55bcc64736f6c63430007040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "196:11103:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "196:11103:9:-:0;;;;;;;;",
  "source": "pragma solidity ^0.7.4;\n\nimport \"./BytesUtils.sol\";\nimport \"@ensdomains/buffer/contracts/Buffer.sol\";\n\n/**\n* @dev RRUtils is a library that provides utilities for parsing DNS resource records.\n*/\nlibrary RRUtils {\n    using BytesUtils for *;\n    using Buffer for *;\n\n    /**\n    * @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n    * @param self The byte array to read a name from.\n    * @param offset The offset to start reading at.\n    * @return The length of the DNS name at 'offset', in bytes.\n    */\n    function nameLength(bytes memory self, uint offset) internal pure returns(uint) {\n        uint idx = offset;\n        while (true) {\n            assert(idx < self.length);\n            uint labelLen = self.readUint8(idx);\n            idx += labelLen + 1;\n            if (labelLen == 0) {\n                break;\n            }\n        }\n        return idx - offset;\n    }\n\n    /**\n    * @dev Returns a DNS format name at the specified offset of self.\n    * @param self The byte array to read a name from.\n    * @param offset The offset to start reading at.\n    * @return ret The name.\n    */\n    function readName(bytes memory self, uint offset) internal pure returns(bytes memory ret) {\n        uint len = nameLength(self, offset);\n        return self.substring(offset, len);\n    }\n\n    /**\n    * @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n    * @param self The byte array to read a name from.\n    * @param offset The offset to start reading at.\n    * @return The number of labels in the DNS name at 'offset', in bytes.\n    */\n    function labelCount(bytes memory self, uint offset) internal pure returns(uint) {\n        uint count = 0;\n        while (true) {\n            assert(offset < self.length);\n            uint labelLen = self.readUint8(offset);\n            offset += labelLen + 1;\n            if (labelLen == 0) {\n                break;\n            }\n            count += 1;\n        }\n        return count;\n    }\n\n    uint constant RRSIG_TYPE = 0;\n    uint constant RRSIG_ALGORITHM = 2;\n    uint constant RRSIG_LABELS = 3;\n    uint constant RRSIG_TTL = 4;\n    uint constant RRSIG_EXPIRATION = 8;\n    uint constant RRSIG_INCEPTION = 12;\n    uint constant RRSIG_KEY_TAG = 16;\n    uint constant RRSIG_SIGNER_NAME = 18;\n\n    struct SignedSet {\n        uint16 typeCovered;\n        uint8 algorithm;\n        uint8 labels;\n        uint32 ttl;\n        uint32 expiration;\n        uint32 inception;\n        uint16 keytag;\n        bytes signerName;\n        bytes data;\n        bytes name;\n    }\n\n    function readSignedSet(bytes memory data) internal pure returns(SignedSet memory self) {\n        self.typeCovered = data.readUint16(RRSIG_TYPE);\n        self.algorithm = data.readUint8(RRSIG_ALGORITHM);\n        self.labels = data.readUint8(RRSIG_LABELS);\n        self.ttl = data.readUint32(RRSIG_TTL);\n        self.expiration = data.readUint32(RRSIG_EXPIRATION);\n        self.inception = data.readUint32(RRSIG_INCEPTION);\n        self.keytag = data.readUint16(RRSIG_KEY_TAG);\n        self.signerName = readName(data, RRSIG_SIGNER_NAME);\n        self.data = data.substring(RRSIG_SIGNER_NAME + self.signerName.length, data.length - RRSIG_SIGNER_NAME - self.signerName.length);\n    }\n\n    function rrs(SignedSet memory rrset) internal pure returns(RRIterator memory) {\n        return iterateRRs(rrset.data, 0);\n    }\n\n    /**\n    * @dev An iterator over resource records.\n    */\n    struct RRIterator {\n        bytes data;\n        uint offset;\n        uint16 dnstype;\n        uint16 class;\n        uint32 ttl;\n        uint rdataOffset;\n        uint nextOffset;\n    }\n\n    /**\n    * @dev Begins iterating over resource records.\n    * @param self The byte string to read from.\n    * @param offset The offset to start reading at.\n    * @return ret An iterator object.\n    */\n    function iterateRRs(bytes memory self, uint offset) internal pure returns (RRIterator memory ret) {\n        ret.data = self;\n        ret.nextOffset = offset;\n        next(ret);\n    }\n\n    /**\n    * @dev Returns true iff there are more RRs to iterate.\n    * @param iter The iterator to check.\n    * @return True iff the iterator has finished.\n    */\n    function done(RRIterator memory iter) internal pure returns(bool) {\n        return iter.offset >= iter.data.length;\n    }\n\n    /**\n    * @dev Moves the iterator to the next resource record.\n    * @param iter The iterator to advance.\n    */\n    function next(RRIterator memory iter) internal pure {\n        iter.offset = iter.nextOffset;\n        if (iter.offset >= iter.data.length) {\n            return;\n        }\n\n        // Skip the name\n        uint off = iter.offset + nameLength(iter.data, iter.offset);\n\n        // Read type, class, and ttl\n        iter.dnstype = iter.data.readUint16(off);\n        off += 2;\n        iter.class = iter.data.readUint16(off);\n        off += 2;\n        iter.ttl = iter.data.readUint32(off);\n        off += 4;\n\n        // Read the rdata\n        uint rdataLength = iter.data.readUint16(off);\n        off += 2;\n        iter.rdataOffset = off;\n        iter.nextOffset = off + rdataLength;\n    }\n\n    /**\n    * @dev Returns the name of the current record.\n    * @param iter The iterator.\n    * @return A new bytes object containing the owner name from the RR.\n    */\n    function name(RRIterator memory iter) internal pure returns(bytes memory) {\n        return iter.data.substring(iter.offset, nameLength(iter.data, iter.offset));\n    }\n\n    /**\n    * @dev Returns the rdata portion of the current record.\n    * @param iter The iterator.\n    * @return A new bytes object containing the RR's RDATA.\n    */\n    function rdata(RRIterator memory iter) internal pure returns(bytes memory) {\n        return iter.data.substring(iter.rdataOffset, iter.nextOffset - iter.rdataOffset);\n    }\n\n    uint constant DNSKEY_FLAGS = 0;\n    uint constant DNSKEY_PROTOCOL = 2;\n    uint constant DNSKEY_ALGORITHM = 3;\n    uint constant DNSKEY_PUBKEY = 4;\n\n    struct DNSKEY {\n        uint16 flags;\n        uint8 protocol;\n        uint8 algorithm;\n        bytes publicKey;\n    }\n\n    function readDNSKEY(bytes memory data, uint offset, uint length) internal pure returns(DNSKEY memory self) {\n        self.flags = data.readUint16(offset + DNSKEY_FLAGS);\n        self.protocol = data.readUint8(offset + DNSKEY_PROTOCOL);\n        self.algorithm = data.readUint8(offset + DNSKEY_ALGORITHM);\n        self.publicKey = data.substring(offset + DNSKEY_PUBKEY, length - DNSKEY_PUBKEY);\n    } \n\n    uint constant DS_KEY_TAG = 0;\n    uint constant DS_ALGORITHM = 2;\n    uint constant DS_DIGEST_TYPE = 3;\n    uint constant DS_DIGEST = 4;\n\n    struct DS {\n        uint16 keytag;\n        uint8 algorithm;\n        uint8 digestType;\n        bytes digest;\n    }\n\n    function readDS(bytes memory data, uint offset, uint length) internal pure returns(DS memory self) {\n        self.keytag = data.readUint16(offset + DS_KEY_TAG);\n        self.algorithm = data.readUint8(offset + DS_ALGORITHM);\n        self.digestType = data.readUint8(offset + DS_DIGEST_TYPE);\n        self.digest = data.substring(offset + DS_DIGEST, length - DS_DIGEST);\n    }\n\n    struct NSEC3 {\n        uint8 hashAlgorithm;\n        uint8 flags;\n        uint16 iterations;\n        bytes salt;\n        bytes32 nextHashedOwnerName;\n        bytes typeBitmap;\n    }\n\n    uint constant NSEC3_HASH_ALGORITHM = 0;\n    uint constant NSEC3_FLAGS = 1;\n    uint constant NSEC3_ITERATIONS = 2;\n    uint constant NSEC3_SALT_LENGTH = 4;\n    uint constant NSEC3_SALT = 5;\n\n    function readNSEC3(bytes memory data, uint offset, uint length) internal pure returns(NSEC3 memory self) {\n        uint end = offset + length;\n        self.hashAlgorithm = data.readUint8(offset + NSEC3_HASH_ALGORITHM);\n        self.flags = data.readUint8(offset + NSEC3_FLAGS);\n        self.iterations = data.readUint16(offset + NSEC3_ITERATIONS);\n        uint8 saltLength = data.readUint8(offset + NSEC3_SALT_LENGTH);\n        offset = offset + NSEC3_SALT;\n        self.salt = data.substring(offset, saltLength);\n        offset += saltLength;\n        uint8 nextLength = data.readUint8(offset);\n        require(nextLength <= 32);\n        offset += 1;\n        self.nextHashedOwnerName = data.readBytesN(offset, nextLength);\n        offset += nextLength;\n        self.typeBitmap = data.substring(offset, end - offset);\n    }\n\n    function checkTypeBitmap(NSEC3 memory self, uint16 rrtype) internal pure returns(bool) {\n        return checkTypeBitmap(self.typeBitmap, 0, rrtype);\n    }\n\n    /**\n    * @dev Checks if a given RR type exists in a type bitmap.\n    * @param bitmap The byte string to read the type bitmap from.\n    * @param offset The offset to start reading at.\n    * @param rrtype The RR type to check for.\n    * @return True if the type is found in the bitmap, false otherwise.\n    */\n    function checkTypeBitmap(bytes memory bitmap, uint offset, uint16 rrtype) internal pure returns (bool) {\n        uint8 typeWindow = uint8(rrtype >> 8);\n        uint8 windowByte = uint8((rrtype & 0xff) / 8);\n        uint8 windowBitmask = uint8(uint8(1) << (uint8(7) - uint8(rrtype & 0x7)));\n        for (uint off = offset; off < bitmap.length;) {\n            uint8 window = bitmap.readUint8(off);\n            uint8 len = bitmap.readUint8(off + 1);\n            if (typeWindow < window) {\n                // We've gone past our window; it's not here.\n                return false;\n            } else if (typeWindow == window) {\n                // Check this type bitmap\n                if (len <= windowByte) {\n                    // Our type is past the end of the bitmap\n                    return false;\n                }\n                return (bitmap.readUint8(off + windowByte + 2) & windowBitmask) != 0;\n            } else {\n                // Skip this type bitmap\n                off += len + 2;\n            }\n        }\n\n        return false;\n    }\n\n    function compareNames(bytes memory self, bytes memory other) internal pure returns (int) {\n        if (self.equals(other)) {\n            return 0;\n        }\n\n        uint off;\n        uint otheroff;\n        uint prevoff;\n        uint otherprevoff;\n        uint counts = labelCount(self, 0);\n        uint othercounts = labelCount(other, 0);\n\n        // Keep removing labels from the front of the name until both names are equal length\n        while (counts > othercounts) {\n            prevoff = off;\n            off = progress(self, off);\n            counts--;\n        }\n\n        while (othercounts > counts) {\n            otherprevoff = otheroff;\n            otheroff = progress(other, otheroff);\n            othercounts--;\n        }\n\n        // Compare the last nonequal labels to each other\n        while (counts > 0 && !self.equals(off, other, otheroff)) {\n            prevoff = off;\n            off = progress(self, off);\n            otherprevoff = otheroff;\n            otheroff = progress(other, otheroff);\n            counts -= 1;\n        }\n\n        if (off == 0) {\n            return -1;\n        }\n        if(otheroff == 0) {\n            return 1;\n        }\n\n        return self.compare(prevoff + 1, self.readUint8(prevoff), other, otherprevoff + 1, other.readUint8(otherprevoff));\n    }\n\n    function progress(bytes memory body, uint off) internal pure returns(uint) {\n        return off + 1 + body.readUint8(off);\n    }\n}\n",
  "sourcePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
  "ast": {
    "absolutePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
    "exportedSymbols": {
      "Buffer": [
        1452
      ],
      "BytesUtils": [
        2183
      ],
      "RRUtils": [
        3396
      ]
    },
    "id": 3397,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2275,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "@ensdomains/dnssec-oracle/contracts/BytesUtils.sol",
        "file": "./BytesUtils.sol",
        "id": 2276,
        "nodeType": "ImportDirective",
        "scope": 3397,
        "sourceUnit": 2184,
        "src": "25:26:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
        "file": "@ensdomains/buffer/contracts/Buffer.sol",
        "id": 2277,
        "nodeType": "ImportDirective",
        "scope": 3397,
        "sourceUnit": 1453,
        "src": "52:49:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 2278,
          "nodeType": "StructuredDocumentation",
          "src": "103:92:9",
          "text": " @dev RRUtils is a library that provides utilities for parsing DNS resource records."
        },
        "fullyImplemented": true,
        "id": 3396,
        "linearizedBaseContracts": [
          3396
        ],
        "name": "RRUtils",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2280,
            "libraryName": {
              "id": 2279,
              "name": "BytesUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2183,
              "src": "224:10:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesUtils_$2183",
                "typeString": "library BytesUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "218:23:9"
          },
          {
            "id": 2282,
            "libraryName": {
              "id": 2281,
              "name": "Buffer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1452,
              "src": "252:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Buffer_$1452",
                "typeString": "library Buffer"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "246:19:9"
          },
          {
            "body": {
              "id": 2329,
              "nodeType": "Block",
              "src": "614:287:9",
              "statements": [
                {
                  "assignments": [
                    2293
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2293,
                      "mutability": "mutable",
                      "name": "idx",
                      "nodeType": "VariableDeclaration",
                      "scope": 2329,
                      "src": "624:8:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2292,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "624:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2295,
                  "initialValue": {
                    "id": 2294,
                    "name": "offset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2287,
                    "src": "635:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "624:17:9"
                },
                {
                  "body": {
                    "id": 2323,
                    "nodeType": "Block",
                    "src": "664:202:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2298,
                                "name": "idx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2293,
                                "src": "685:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 2299,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2285,
                                  "src": "691:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "691:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "685:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2297,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "678:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 2302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "678:25:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2303,
                        "nodeType": "ExpressionStatement",
                        "src": "678:25:9"
                      },
                      {
                        "assignments": [
                          2305
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2305,
                            "mutability": "mutable",
                            "name": "labelLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 2323,
                            "src": "717:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2304,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "717:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2310,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2308,
                              "name": "idx",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2293,
                              "src": "748:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2306,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2285,
                              "src": "733:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1764,
                            "src": "733:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 2309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "733:19:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "717:35:9"
                      },
                      {
                        "expression": {
                          "id": 2315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2311,
                            "name": "idx",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2293,
                            "src": "766:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2312,
                              "name": "labelLen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "773:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 2313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "784:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "773:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "766:19:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2316,
                        "nodeType": "ExpressionStatement",
                        "src": "766:19:9"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2317,
                            "name": "labelLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2305,
                            "src": "803:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "815:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "803:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2322,
                        "nodeType": "IfStatement",
                        "src": "799:57:9",
                        "trueBody": {
                          "id": 2321,
                          "nodeType": "Block",
                          "src": "818:38:9",
                          "statements": [
                            {
                              "id": 2320,
                              "nodeType": "Break",
                              "src": "836:5:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "hexValue": "74727565",
                    "id": 2296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "658:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "id": 2324,
                  "nodeType": "WhileStatement",
                  "src": "651:215:9"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2325,
                      "name": "idx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2293,
                      "src": "882:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 2326,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2287,
                      "src": "888:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "882:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2291,
                  "id": 2328,
                  "nodeType": "Return",
                  "src": "875:19:9"
                }
              ]
            },
            "documentation": {
              "id": 2283,
              "nodeType": "StructuredDocumentation",
              "src": "271:258:9",
              "text": " @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return The length of the DNS name at 'offset', in bytes."
            },
            "id": 2330,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "nameLength",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2285,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "554:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2284,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2287,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "573:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2286,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "573:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "553:32:9"
            },
            "returnParameters": {
              "id": 2291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2290,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "608:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2289,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "608:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "607:6:9"
            },
            "scope": 3396,
            "src": "534:367:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2353,
              "nodeType": "Block",
              "src": "1216:96:9",
              "statements": [
                {
                  "assignments": [
                    2341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2341,
                      "mutability": "mutable",
                      "name": "len",
                      "nodeType": "VariableDeclaration",
                      "scope": 2353,
                      "src": "1226:8:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2340,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1226:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2346,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2343,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2333,
                        "src": "1248:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 2344,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2335,
                        "src": "1254:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2342,
                      "name": "nameLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2330,
                      "src": "1237:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1237:24:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1226:35:9"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2349,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2335,
                        "src": "1293:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2350,
                        "name": "len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2341,
                        "src": "1301:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 2347,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2333,
                        "src": "1278:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1955,
                      "src": "1278:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1278:27:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2339,
                  "id": 2352,
                  "nodeType": "Return",
                  "src": "1271:34:9"
                }
              ]
            },
            "documentation": {
              "id": 2331,
              "nodeType": "StructuredDocumentation",
              "src": "907:214:9",
              "text": " @dev Returns a DNS format name at the specified offset of self.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return ret The name."
            },
            "id": 2354,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2333,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "1144:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2332,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1144:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2335,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "1163:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1163:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1143:32:9"
            },
            "returnParameters": {
              "id": 2339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2338,
                  "mutability": "mutable",
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 2354,
                  "src": "1198:16:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2337,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1198:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1197:18:9"
            },
            "scope": 3396,
            "src": "1126:186:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2403,
              "nodeType": "Block",
              "src": "1672:310:9",
              "statements": [
                {
                  "assignments": [
                    2365
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2365,
                      "mutability": "mutable",
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 2403,
                      "src": "1682:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2364,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1682:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2367,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 2366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1695:1:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1682:14:9"
                },
                {
                  "body": {
                    "id": 2399,
                    "nodeType": "Block",
                    "src": "1719:235:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2370,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2359,
                                "src": "1740:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 2371,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2357,
                                  "src": "1749:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1749:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1740:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2369,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "1733:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 2374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1733:28:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2375,
                        "nodeType": "ExpressionStatement",
                        "src": "1733:28:9"
                      },
                      {
                        "assignments": [
                          2377
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2377,
                            "mutability": "mutable",
                            "name": "labelLen",
                            "nodeType": "VariableDeclaration",
                            "scope": 2399,
                            "src": "1775:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2376,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1775:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2382,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2380,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2359,
                              "src": "1806:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2378,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2357,
                              "src": "1791:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1764,
                            "src": "1791:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 2381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1791:22:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1775:38:9"
                      },
                      {
                        "expression": {
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2383,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2359,
                            "src": "1827:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2384,
                              "name": "labelLen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2377,
                              "src": "1837:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 2385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1848:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1837:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1827:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2388,
                        "nodeType": "ExpressionStatement",
                        "src": "1827:22:9"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2389,
                            "name": "labelLen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2377,
                            "src": "1867:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1879:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1867:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2394,
                        "nodeType": "IfStatement",
                        "src": "1863:57:9",
                        "trueBody": {
                          "id": 2393,
                          "nodeType": "Block",
                          "src": "1882:38:9",
                          "statements": [
                            {
                              "id": 2392,
                              "nodeType": "Break",
                              "src": "1900:5:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 2397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2395,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2365,
                            "src": "1933:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 2396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1942:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1933:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2398,
                        "nodeType": "ExpressionStatement",
                        "src": "1933:10:9"
                      }
                    ]
                  },
                  "condition": {
                    "hexValue": "74727565",
                    "id": 2368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1713:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "id": 2400,
                  "nodeType": "WhileStatement",
                  "src": "1706:248:9"
                },
                {
                  "expression": {
                    "id": 2401,
                    "name": "count",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2365,
                    "src": "1970:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2363,
                  "id": 2402,
                  "nodeType": "Return",
                  "src": "1963:12:9"
                }
              ]
            },
            "documentation": {
              "id": 2355,
              "nodeType": "StructuredDocumentation",
              "src": "1318:269:9",
              "text": " @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return The number of labels in the DNS name at 'offset', in bytes."
            },
            "id": 2404,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "labelCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2357,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2404,
                  "src": "1612:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2356,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1612:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2359,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2404,
                  "src": "1631:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2358,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1631:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1611:32:9"
            },
            "returnParameters": {
              "id": 2363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2362,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2404,
                  "src": "1666:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2361,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1666:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1665:6:9"
            },
            "scope": 3396,
            "src": "1592:390:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2407,
            "mutability": "constant",
            "name": "RRSIG_TYPE",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "1988:28:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2405,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "1988:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 2406,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2015:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2410,
            "mutability": "constant",
            "name": "RRSIG_ALGORITHM",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2022:33:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2408,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2022:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32",
              "id": 2409,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2054:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2413,
            "mutability": "constant",
            "name": "RRSIG_LABELS",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2061:30:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2411,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2061:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "33",
              "id": 2412,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2090:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2416,
            "mutability": "constant",
            "name": "RRSIG_TTL",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2097:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2414,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2097:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "34",
              "id": 2415,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2123:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2419,
            "mutability": "constant",
            "name": "RRSIG_EXPIRATION",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2130:34:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2417,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2130:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "38",
              "id": 2418,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2163:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8_by_1",
                "typeString": "int_const 8"
              },
              "value": "8"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2422,
            "mutability": "constant",
            "name": "RRSIG_INCEPTION",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2170:34:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2420,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2170:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "3132",
              "id": 2421,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2202:2:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_12_by_1",
                "typeString": "int_const 12"
              },
              "value": "12"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2425,
            "mutability": "constant",
            "name": "RRSIG_KEY_TAG",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2210:32:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2423,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2210:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "3136",
              "id": 2424,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2240:2:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_16_by_1",
                "typeString": "int_const 16"
              },
              "value": "16"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2428,
            "mutability": "constant",
            "name": "RRSIG_SIGNER_NAME",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "2248:36:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2426,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2248:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "3138",
              "id": 2427,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2282:2:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18_by_1",
                "typeString": "int_const 18"
              },
              "value": "18"
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "RRUtils.SignedSet",
            "id": 2449,
            "members": [
              {
                "constant": false,
                "id": 2430,
                "mutability": "mutable",
                "name": "typeCovered",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2318:18:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2429,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "2318:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2432,
                "mutability": "mutable",
                "name": "algorithm",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2346:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2431,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "2346:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2434,
                "mutability": "mutable",
                "name": "labels",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2371:12:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2433,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "2371:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2436,
                "mutability": "mutable",
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2393:10:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 2435,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2393:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2438,
                "mutability": "mutable",
                "name": "expiration",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2413:17:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 2437,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2413:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2440,
                "mutability": "mutable",
                "name": "inception",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2440:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 2439,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2440:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2442,
                "mutability": "mutable",
                "name": "keytag",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2466:13:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2441,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "2466:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2444,
                "mutability": "mutable",
                "name": "signerName",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2489:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2443,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "2489:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2446,
                "mutability": "mutable",
                "name": "data",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2515:10:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2445,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "2515:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2448,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 2449,
                "src": "2535:10:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2447,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "2535:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "SignedSet",
            "nodeType": "StructDefinition",
            "scope": 3396,
            "src": "2291:261:9",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2549,
              "nodeType": "Block",
              "src": "2645:593:9",
              "statements": [
                {
                  "expression": {
                    "id": 2463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2456,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2655:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2458,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "typeCovered",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2430,
                      "src": "2655:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2461,
                          "name": "RRSIG_TYPE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2407,
                          "src": "2690:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2459,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "2674:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "2674:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 2462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2674:27:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "2655:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2464,
                  "nodeType": "ExpressionStatement",
                  "src": "2655:46:9"
                },
                {
                  "expression": {
                    "id": 2472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2465,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2711:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2467,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "algorithm",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2432,
                      "src": "2711:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2470,
                          "name": "RRSIG_ALGORITHM",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2410,
                          "src": "2743:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2468,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "2728:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2469,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "2728:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2728:31:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "2711:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2473,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:48:9"
                },
                {
                  "expression": {
                    "id": 2481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2474,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2769:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "labels",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2434,
                      "src": "2769:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2479,
                          "name": "RRSIG_LABELS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2413,
                          "src": "2798:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2477,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "2783:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "2783:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2783:28:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "2769:42:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2482,
                  "nodeType": "ExpressionStatement",
                  "src": "2769:42:9"
                },
                {
                  "expression": {
                    "id": 2490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2483,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2821:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2485,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2436,
                      "src": "2821:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2488,
                          "name": "RRSIG_TTL",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2416,
                          "src": "2848:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2486,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "2832:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint32",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1804,
                        "src": "2832:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                        }
                      },
                      "id": 2489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2832:26:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "2821:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 2491,
                  "nodeType": "ExpressionStatement",
                  "src": "2821:37:9"
                },
                {
                  "expression": {
                    "id": 2499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2492,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2868:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2494,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2438,
                      "src": "2868:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2497,
                          "name": "RRSIG_EXPIRATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2419,
                          "src": "2902:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2495,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "2886:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint32",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1804,
                        "src": "2886:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                        }
                      },
                      "id": 2498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2886:33:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "2868:51:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 2500,
                  "nodeType": "ExpressionStatement",
                  "src": "2868:51:9"
                },
                {
                  "expression": {
                    "id": 2508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2501,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2929:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2503,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "inception",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2440,
                      "src": "2929:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2506,
                          "name": "RRSIG_INCEPTION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2422,
                          "src": "2962:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2504,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "2946:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint32",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1804,
                        "src": "2946:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                        }
                      },
                      "id": 2507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2946:32:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "2929:49:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 2509,
                  "nodeType": "ExpressionStatement",
                  "src": "2929:49:9"
                },
                {
                  "expression": {
                    "id": 2517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2510,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "2988:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2512,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keytag",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2442,
                      "src": "2988:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2515,
                          "name": "RRSIG_KEY_TAG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2425,
                          "src": "3018:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2513,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "3002:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "3002:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 2516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3002:30:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "2988:44:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2518,
                  "nodeType": "ExpressionStatement",
                  "src": "2988:44:9"
                },
                {
                  "expression": {
                    "id": 2526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2519,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "3042:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2521,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signerName",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2444,
                      "src": "3042:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2523,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "3069:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "id": 2524,
                          "name": "RRSIG_SIGNER_NAME",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2428,
                          "src": "3075:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2522,
                        "name": "readName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "3060:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 2525,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3060:33:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3042:51:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2527,
                  "nodeType": "ExpressionStatement",
                  "src": "3042:51:9"
                },
                {
                  "expression": {
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2528,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2454,
                        "src": "3103:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                          "typeString": "struct RRUtils.SignedSet memory"
                        }
                      },
                      "id": 2530,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2446,
                      "src": "3103:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2533,
                            "name": "RRSIG_SIGNER_NAME",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2428,
                            "src": "3130:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 2534,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2454,
                                "src": "3150:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 2535,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signerName",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2444,
                              "src": "3150:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3150:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3130:42:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2538,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2451,
                                "src": "3174:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3174:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 2540,
                              "name": "RRSIG_SIGNER_NAME",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "3188:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3174:31:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 2542,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2454,
                                "src": "3208:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                                  "typeString": "struct RRUtils.SignedSet memory"
                                }
                              },
                              "id": 2543,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signerName",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2444,
                              "src": "3208:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3208:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3174:56:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2531,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "3115:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2532,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "substring",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1955,
                        "src": "3115:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 2546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3115:116:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3103:128:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2548,
                  "nodeType": "ExpressionStatement",
                  "src": "3103:128:9"
                }
              ]
            },
            "id": 2550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readSignedSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2451,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2550,
                  "src": "2581:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2450,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2580:19:9"
            },
            "returnParameters": {
              "id": 2455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2454,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2550,
                  "src": "2622:21:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                    "typeString": "struct RRUtils.SignedSet"
                  },
                  "typeName": {
                    "id": 2453,
                    "name": "SignedSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2449,
                    "src": "2622:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SignedSet_$2449_storage_ptr",
                      "typeString": "struct RRUtils.SignedSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2621:23:9"
            },
            "scope": 3396,
            "src": "2558:680:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2563,
              "nodeType": "Block",
              "src": "3322:49:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2558,
                          "name": "rrset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2552,
                          "src": "3350:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                            "typeString": "struct RRUtils.SignedSet memory"
                          }
                        },
                        "id": 2559,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2446,
                        "src": "3350:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 2560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3362:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2557,
                      "name": "iterateRRs",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2606,
                      "src": "3339:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$2579_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                      }
                    },
                    "id": 2561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3339:25:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                      "typeString": "struct RRUtils.RRIterator memory"
                    }
                  },
                  "functionReturnParameters": 2556,
                  "id": 2562,
                  "nodeType": "Return",
                  "src": "3332:32:9"
                }
              ]
            },
            "id": 2564,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rrs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2552,
                  "mutability": "mutable",
                  "name": "rrset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2564,
                  "src": "3257:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_SignedSet_$2449_memory_ptr",
                    "typeString": "struct RRUtils.SignedSet"
                  },
                  "typeName": {
                    "id": 2551,
                    "name": "SignedSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2449,
                    "src": "3257:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SignedSet_$2449_storage_ptr",
                      "typeString": "struct RRUtils.SignedSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3256:24:9"
            },
            "returnParameters": {
              "id": 2556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2555,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2564,
                  "src": "3303:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                    "typeString": "struct RRUtils.RRIterator"
                  },
                  "typeName": {
                    "id": 2554,
                    "name": "RRIterator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2579,
                    "src": "3303:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_storage_ptr",
                      "typeString": "struct RRUtils.RRIterator"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3302:19:9"
            },
            "scope": 3396,
            "src": "3244:127:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "RRUtils.RRIterator",
            "id": 2579,
            "members": [
              {
                "constant": false,
                "id": 2566,
                "mutability": "mutable",
                "name": "data",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3466:10:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2565,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "3466:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2568,
                "mutability": "mutable",
                "name": "offset",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3486:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2567,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3486:4:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2570,
                "mutability": "mutable",
                "name": "dnstype",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3507:14:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2569,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "3507:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2572,
                "mutability": "mutable",
                "name": "class",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3531:12:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2571,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "3531:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2574,
                "mutability": "mutable",
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3553:10:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 2573,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3553:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2576,
                "mutability": "mutable",
                "name": "rdataOffset",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3573:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2575,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3573:4:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2578,
                "mutability": "mutable",
                "name": "nextOffset",
                "nodeType": "VariableDeclaration",
                "scope": 2579,
                "src": "3599:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2577,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3599:4:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "RRIterator",
            "nodeType": "StructDefinition",
            "scope": 3396,
            "src": "3438:183:9",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2605,
              "nodeType": "Block",
              "src": "3929:84:9",
              "statements": [
                {
                  "expression": {
                    "id": 2593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2589,
                        "name": "ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2587,
                        "src": "3939:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2591,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2566,
                      "src": "3939:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2592,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2582,
                      "src": "3950:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3939:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2594,
                  "nodeType": "ExpressionStatement",
                  "src": "3939:15:9"
                },
                {
                  "expression": {
                    "id": 2599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2595,
                        "name": "ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2587,
                        "src": "3964:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2597,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextOffset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "3964:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2598,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2584,
                      "src": "3981:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3964:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2600,
                  "nodeType": "ExpressionStatement",
                  "src": "3964:23:9"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2602,
                        "name": "ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2587,
                        "src": "4002:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      ],
                      "id": 2601,
                      "name": "next",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2725,
                      "src": "3997:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$2579_memory_ptr_$returns$__$",
                        "typeString": "function (struct RRUtils.RRIterator memory) pure"
                      }
                    },
                    "id": 2603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3997:9:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2604,
                  "nodeType": "ExpressionStatement",
                  "src": "3997:9:9"
                }
              ]
            },
            "documentation": {
              "id": 2580,
              "nodeType": "StructuredDocumentation",
              "src": "3627:199:9",
              "text": " @dev Begins iterating over resource records.\n @param self The byte string to read from.\n @param offset The offset to start reading at.\n @return ret An iterator object."
            },
            "id": 2606,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "iterateRRs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2582,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2606,
                  "src": "3851:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2581,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3851:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2584,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2606,
                  "src": "3870:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2583,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3870:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3850:32:9"
            },
            "returnParameters": {
              "id": 2588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2587,
                  "mutability": "mutable",
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 2606,
                  "src": "3906:21:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                    "typeString": "struct RRUtils.RRIterator"
                  },
                  "typeName": {
                    "id": 2586,
                    "name": "RRIterator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2579,
                    "src": "3906:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_storage_ptr",
                      "typeString": "struct RRUtils.RRIterator"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3905:23:9"
            },
            "scope": 3396,
            "src": "3831:182:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2621,
              "nodeType": "Block",
              "src": "4250:55:9",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 2614,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2609,
                        "src": "4267:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2615,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "offset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2568,
                      "src": "4267:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 2616,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "4282:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2617,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2566,
                        "src": "4282:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4282:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4267:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2613,
                  "id": 2620,
                  "nodeType": "Return",
                  "src": "4260:38:9"
                }
              ]
            },
            "documentation": {
              "id": 2607,
              "nodeType": "StructuredDocumentation",
              "src": "4019:160:9",
              "text": " @dev Returns true iff there are more RRs to iterate.\n @param iter The iterator to check.\n @return True iff the iterator has finished."
            },
            "id": 2622,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "done",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2609,
                  "mutability": "mutable",
                  "name": "iter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2622,
                  "src": "4198:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                    "typeString": "struct RRUtils.RRIterator"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "RRIterator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2579,
                    "src": "4198:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_storage_ptr",
                      "typeString": "struct RRUtils.RRIterator"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4197:24:9"
            },
            "returnParameters": {
              "id": 2613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2612,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2622,
                  "src": "4244:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2611,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4244:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4243:6:9"
            },
            "scope": 3396,
            "src": "4184:121:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2724,
              "nodeType": "Block",
              "src": "4480:630:9",
              "statements": [
                {
                  "expression": {
                    "id": 2633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2628,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4490:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2630,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "offset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2568,
                      "src": "4490:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2631,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4504:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2632,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextOffset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "4504:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4490:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2634,
                  "nodeType": "ExpressionStatement",
                  "src": "4490:29:9"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 2635,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4533:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2636,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "offset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2568,
                      "src": "4533:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "expression": {
                        "expression": {
                          "id": 2637,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2625,
                          "src": "4548:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2638,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2566,
                        "src": "4548:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4548:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4533:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2643,
                  "nodeType": "IfStatement",
                  "src": "4529:68:9",
                  "trueBody": {
                    "id": 2642,
                    "nodeType": "Block",
                    "src": "4566:31:9",
                    "statements": [
                      {
                        "functionReturnParameters": 2627,
                        "id": 2641,
                        "nodeType": "Return",
                        "src": "4580:7:9"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2645
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2645,
                      "mutability": "mutable",
                      "name": "off",
                      "nodeType": "VariableDeclaration",
                      "scope": 2724,
                      "src": "4632:8:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2644,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4632:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2655,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 2646,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4643:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2647,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "offset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2568,
                      "src": "4643:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 2649,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4668:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2566,
                          "src": "4668:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "expression": {
                            "id": 2651,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4679:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "offset",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2568,
                          "src": "4679:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2648,
                        "name": "nameLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2330,
                        "src": "4657:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2653,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4657:34:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4643:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4632:59:9"
                },
                {
                  "expression": {
                    "id": 2664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2656,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4739:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2658,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "dnstype",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2570,
                      "src": "4739:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2662,
                          "name": "off",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2645,
                          "src": "4775:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 2659,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4754:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2660,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2566,
                          "src": "4754:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "4754:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 2663,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4754:25:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "4739:40:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2665,
                  "nodeType": "ExpressionStatement",
                  "src": "4739:40:9"
                },
                {
                  "expression": {
                    "id": 2668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2666,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2645,
                      "src": "4789:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "32",
                      "id": 2667,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4796:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "4789:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2669,
                  "nodeType": "ExpressionStatement",
                  "src": "4789:8:9"
                },
                {
                  "expression": {
                    "id": 2678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2670,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4807:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2672,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "class",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2572,
                      "src": "4807:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2676,
                          "name": "off",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2645,
                          "src": "4841:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 2673,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4820:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2674,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2566,
                          "src": "4820:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "4820:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 2677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4820:25:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "4807:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2679,
                  "nodeType": "ExpressionStatement",
                  "src": "4807:38:9"
                },
                {
                  "expression": {
                    "id": 2682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2680,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2645,
                      "src": "4855:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "32",
                      "id": 2681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4862:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "4855:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2683,
                  "nodeType": "ExpressionStatement",
                  "src": "4855:8:9"
                },
                {
                  "expression": {
                    "id": 2692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2684,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4873:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2686,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2574,
                      "src": "4873:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2690,
                          "name": "off",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2645,
                          "src": "4905:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 2687,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4884:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2688,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2566,
                          "src": "4884:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint32",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1804,
                        "src": "4884:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                        }
                      },
                      "id": 2691,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4884:25:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "4873:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 2693,
                  "nodeType": "ExpressionStatement",
                  "src": "4873:36:9"
                },
                {
                  "expression": {
                    "id": 2696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2694,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2645,
                      "src": "4919:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "34",
                      "id": 2695,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4926:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "4919:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2697,
                  "nodeType": "ExpressionStatement",
                  "src": "4919:8:9"
                },
                {
                  "assignments": [
                    2699
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2699,
                      "mutability": "mutable",
                      "name": "rdataLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 2724,
                      "src": "4964:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2698,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4964:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2705,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2703,
                        "name": "off",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2645,
                        "src": "5004:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 2700,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2625,
                          "src": "4983:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2701,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2566,
                        "src": "4983:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "readUint16",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1784,
                      "src": "4983:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                      }
                    },
                    "id": 2704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4983:25:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4964:44:9"
                },
                {
                  "expression": {
                    "id": 2708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2706,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2645,
                      "src": "5018:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "32",
                      "id": 2707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5025:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "5018:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2709,
                  "nodeType": "ExpressionStatement",
                  "src": "5018:8:9"
                },
                {
                  "expression": {
                    "id": 2714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2710,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "5036:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2712,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "rdataOffset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2576,
                      "src": "5036:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2713,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2645,
                      "src": "5055:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5036:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2715,
                  "nodeType": "ExpressionStatement",
                  "src": "5036:22:9"
                },
                {
                  "expression": {
                    "id": 2722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2716,
                        "name": "iter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "5068:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator memory"
                        }
                      },
                      "id": 2718,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextOffset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2578,
                      "src": "5068:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2721,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 2719,
                        "name": "off",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2645,
                        "src": "5086:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "id": 2720,
                        "name": "rdataLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2699,
                        "src": "5092:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5086:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5068:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2723,
                  "nodeType": "ExpressionStatement",
                  "src": "5068:35:9"
                }
              ]
            },
            "documentation": {
              "id": 2623,
              "nodeType": "StructuredDocumentation",
              "src": "4311:112:9",
              "text": " @dev Moves the iterator to the next resource record.\n @param iter The iterator to advance."
            },
            "id": 2725,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "next",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2625,
                  "mutability": "mutable",
                  "name": "iter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2725,
                  "src": "4442:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                    "typeString": "struct RRUtils.RRIterator"
                  },
                  "typeName": {
                    "id": 2624,
                    "name": "RRIterator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2579,
                    "src": "4442:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_storage_ptr",
                      "typeString": "struct RRUtils.RRIterator"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4441:24:9"
            },
            "returnParameters": {
              "id": 2627,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4480:0:9"
            },
            "scope": 3396,
            "src": "4428:682:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2746,
              "nodeType": "Block",
              "src": "5360:92:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2736,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2728,
                          "src": "5397:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2737,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "offset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2568,
                        "src": "5397:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 2739,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2728,
                              "src": "5421:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 2740,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2566,
                            "src": "5421:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "expression": {
                              "id": 2741,
                              "name": "iter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2728,
                              "src": "5432:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                                "typeString": "struct RRUtils.RRIterator memory"
                              }
                            },
                            "id": 2742,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "offset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2568,
                            "src": "5432:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2738,
                          "name": "nameLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2330,
                          "src": "5410:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5410:34:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 2733,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2728,
                          "src": "5377:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2734,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2566,
                        "src": "5377:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2735,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1955,
                      "src": "5377:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5377:68:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2732,
                  "id": 2745,
                  "nodeType": "Return",
                  "src": "5370:75:9"
                }
              ]
            },
            "documentation": {
              "id": 2726,
              "nodeType": "StructuredDocumentation",
              "src": "5116:165:9",
              "text": " @dev Returns the name of the current record.\n @param iter The iterator.\n @return A new bytes object containing the owner name from the RR."
            },
            "id": 2747,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2729,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2728,
                  "mutability": "mutable",
                  "name": "iter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2747,
                  "src": "5300:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                    "typeString": "struct RRUtils.RRIterator"
                  },
                  "typeName": {
                    "id": 2727,
                    "name": "RRIterator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2579,
                    "src": "5300:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_storage_ptr",
                      "typeString": "struct RRUtils.RRIterator"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5299:24:9"
            },
            "returnParameters": {
              "id": 2732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2731,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2747,
                  "src": "5346:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2730,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5346:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5345:14:9"
            },
            "scope": 3396,
            "src": "5286:166:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2767,
              "nodeType": "Block",
              "src": "5700:97:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2758,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2750,
                          "src": "5737:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2759,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "rdataOffset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2576,
                        "src": "5737:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 2760,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2750,
                            "src": "5755:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2761,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nextOffset",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2578,
                          "src": "5755:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "expression": {
                            "id": 2762,
                            "name": "iter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2750,
                            "src": "5773:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                              "typeString": "struct RRUtils.RRIterator memory"
                            }
                          },
                          "id": 2763,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "rdataOffset",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2576,
                          "src": "5773:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5755:34:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 2755,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2750,
                          "src": "5717:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 2756,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2566,
                        "src": "5717:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 2757,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1955,
                      "src": "5717:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5717:73:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 2754,
                  "id": 2766,
                  "nodeType": "Return",
                  "src": "5710:80:9"
                }
              ]
            },
            "documentation": {
              "id": 2748,
              "nodeType": "StructuredDocumentation",
              "src": "5458:162:9",
              "text": " @dev Returns the rdata portion of the current record.\n @param iter The iterator.\n @return A new bytes object containing the RR's RDATA."
            },
            "id": 2768,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rdata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2750,
                  "mutability": "mutable",
                  "name": "iter",
                  "nodeType": "VariableDeclaration",
                  "scope": 2768,
                  "src": "5640:22:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                    "typeString": "struct RRUtils.RRIterator"
                  },
                  "typeName": {
                    "id": 2749,
                    "name": "RRIterator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2579,
                    "src": "5640:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRIterator_$2579_storage_ptr",
                      "typeString": "struct RRUtils.RRIterator"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5639:24:9"
            },
            "returnParameters": {
              "id": 2754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2753,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2768,
                  "src": "5686:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2752,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5686:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5685:14:9"
            },
            "scope": 3396,
            "src": "5625:172:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2771,
            "mutability": "constant",
            "name": "DNSKEY_FLAGS",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "5803:30:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2769,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5803:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 2770,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5832:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2774,
            "mutability": "constant",
            "name": "DNSKEY_PROTOCOL",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "5839:33:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2772,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5839:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32",
              "id": 2773,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5871:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2777,
            "mutability": "constant",
            "name": "DNSKEY_ALGORITHM",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "5878:34:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2775,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5878:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "33",
              "id": 2776,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5911:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2780,
            "mutability": "constant",
            "name": "DNSKEY_PUBKEY",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "5918:31:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2778,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5918:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "34",
              "id": 2779,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "5948:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "RRUtils.DNSKEY",
            "id": 2789,
            "members": [
              {
                "constant": false,
                "id": 2782,
                "mutability": "mutable",
                "name": "flags",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "5980:12:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2781,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "5980:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2784,
                "mutability": "mutable",
                "name": "protocol",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "6002:14:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2783,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "6002:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2786,
                "mutability": "mutable",
                "name": "algorithm",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "6026:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2785,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "6026:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2788,
                "mutability": "mutable",
                "name": "publicKey",
                "nodeType": "VariableDeclaration",
                "scope": 2789,
                "src": "6051:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2787,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "6051:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "DNSKEY",
            "nodeType": "StructDefinition",
            "scope": 3396,
            "src": "5956:117:9",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2847,
              "nodeType": "Block",
              "src": "6186:291:9",
              "statements": [
                {
                  "expression": {
                    "id": 2809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2800,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2798,
                        "src": "6196:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$2789_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY memory"
                        }
                      },
                      "id": 2802,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "flags",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2782,
                      "src": "6196:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2805,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "6225:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2806,
                            "name": "DNSKEY_FLAGS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2771,
                            "src": "6234:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6225:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2803,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2791,
                          "src": "6209:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "6209:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 2808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6209:38:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "6196:51:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2810,
                  "nodeType": "ExpressionStatement",
                  "src": "6196:51:9"
                },
                {
                  "expression": {
                    "id": 2820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2811,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2798,
                        "src": "6257:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$2789_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY memory"
                        }
                      },
                      "id": 2813,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "protocol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2784,
                      "src": "6257:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2816,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "6288:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2817,
                            "name": "DNSKEY_PROTOCOL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2774,
                            "src": "6297:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6288:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2814,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2791,
                          "src": "6273:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "6273:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6273:40:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6257:56:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2821,
                  "nodeType": "ExpressionStatement",
                  "src": "6257:56:9"
                },
                {
                  "expression": {
                    "id": 2831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2822,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2798,
                        "src": "6323:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$2789_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY memory"
                        }
                      },
                      "id": 2824,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "algorithm",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2786,
                      "src": "6323:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2827,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "6355:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2828,
                            "name": "DNSKEY_ALGORITHM",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2777,
                            "src": "6364:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6355:25:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2825,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2791,
                          "src": "6340:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2826,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "6340:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2830,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6340:41:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6323:58:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2832,
                  "nodeType": "ExpressionStatement",
                  "src": "6323:58:9"
                },
                {
                  "expression": {
                    "id": 2845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2833,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2798,
                        "src": "6391:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DNSKEY_$2789_memory_ptr",
                          "typeString": "struct RRUtils.DNSKEY memory"
                        }
                      },
                      "id": 2835,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "publicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2788,
                      "src": "6391:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2838,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2793,
                            "src": "6423:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2839,
                            "name": "DNSKEY_PUBKEY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2780,
                            "src": "6432:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6423:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2841,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2795,
                            "src": "6447:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 2842,
                            "name": "DNSKEY_PUBKEY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2780,
                            "src": "6456:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6447:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2836,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2791,
                          "src": "6408:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "substring",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1955,
                        "src": "6408:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 2844,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6408:62:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "6391:79:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2846,
                  "nodeType": "ExpressionStatement",
                  "src": "6391:79:9"
                }
              ]
            },
            "id": 2848,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readDNSKEY",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2791,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2848,
                  "src": "6099:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2790,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6099:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2793,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2848,
                  "src": "6118:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2792,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6118:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2795,
                  "mutability": "mutable",
                  "name": "length",
                  "nodeType": "VariableDeclaration",
                  "scope": 2848,
                  "src": "6131:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2794,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6131:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6098:45:9"
            },
            "returnParameters": {
              "id": 2799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2798,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2848,
                  "src": "6166:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DNSKEY_$2789_memory_ptr",
                    "typeString": "struct RRUtils.DNSKEY"
                  },
                  "typeName": {
                    "id": 2797,
                    "name": "DNSKEY",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2789,
                    "src": "6166:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DNSKEY_$2789_storage_ptr",
                      "typeString": "struct RRUtils.DNSKEY"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6165:20:9"
            },
            "scope": 3396,
            "src": "6079:398:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2851,
            "mutability": "constant",
            "name": "DS_KEY_TAG",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "6484:28:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2849,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "6484:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 2850,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6511:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2854,
            "mutability": "constant",
            "name": "DS_ALGORITHM",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "6518:30:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2852,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "6518:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32",
              "id": 2853,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6547:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2857,
            "mutability": "constant",
            "name": "DS_DIGEST_TYPE",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "6554:32:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2855,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "6554:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "33",
              "id": 2856,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6585:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2860,
            "mutability": "constant",
            "name": "DS_DIGEST",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "6592:27:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2858,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "6592:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "34",
              "id": 2859,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6618:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "RRUtils.DS",
            "id": 2869,
            "members": [
              {
                "constant": false,
                "id": 2862,
                "mutability": "mutable",
                "name": "keytag",
                "nodeType": "VariableDeclaration",
                "scope": 2869,
                "src": "6646:13:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2861,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "6646:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2864,
                "mutability": "mutable",
                "name": "algorithm",
                "nodeType": "VariableDeclaration",
                "scope": 2869,
                "src": "6669:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2863,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "6669:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2866,
                "mutability": "mutable",
                "name": "digestType",
                "nodeType": "VariableDeclaration",
                "scope": 2869,
                "src": "6694:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2865,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "6694:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2868,
                "mutability": "mutable",
                "name": "digest",
                "nodeType": "VariableDeclaration",
                "scope": 2869,
                "src": "6720:12:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2867,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "6720:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "DS",
            "nodeType": "StructDefinition",
            "scope": 3396,
            "src": "6626:113:9",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2927,
              "nodeType": "Block",
              "src": "6844:276:9",
              "statements": [
                {
                  "expression": {
                    "id": 2889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2880,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "6854:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DS_$2869_memory_ptr",
                          "typeString": "struct RRUtils.DS memory"
                        }
                      },
                      "id": 2882,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keytag",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2862,
                      "src": "6854:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2885,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "6884:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2886,
                            "name": "DS_KEY_TAG",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2851,
                            "src": "6893:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6884:19:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2883,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2871,
                          "src": "6868:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "6868:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 2888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6868:36:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "6854:50:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 2890,
                  "nodeType": "ExpressionStatement",
                  "src": "6854:50:9"
                },
                {
                  "expression": {
                    "id": 2900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2891,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "6914:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DS_$2869_memory_ptr",
                          "typeString": "struct RRUtils.DS memory"
                        }
                      },
                      "id": 2893,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "algorithm",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2864,
                      "src": "6914:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2896,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "6946:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2897,
                            "name": "DS_ALGORITHM",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2854,
                            "src": "6955:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6946:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2894,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2871,
                          "src": "6931:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "6931:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2899,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6931:37:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6914:54:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2901,
                  "nodeType": "ExpressionStatement",
                  "src": "6914:54:9"
                },
                {
                  "expression": {
                    "id": 2911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2902,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "6978:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DS_$2869_memory_ptr",
                          "typeString": "struct RRUtils.DS memory"
                        }
                      },
                      "id": 2904,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "digestType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2866,
                      "src": "6978:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2907,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "7011:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2908,
                            "name": "DS_DIGEST_TYPE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "7020:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7011:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2905,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2871,
                          "src": "6996:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "6996:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6996:39:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6978:57:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2912,
                  "nodeType": "ExpressionStatement",
                  "src": "6978:57:9"
                },
                {
                  "expression": {
                    "id": 2925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2913,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "7045:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DS_$2869_memory_ptr",
                          "typeString": "struct RRUtils.DS memory"
                        }
                      },
                      "id": 2915,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "digest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2868,
                      "src": "7045:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2918,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "7074:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2919,
                            "name": "DS_DIGEST",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2860,
                            "src": "7083:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7074:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2921,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2875,
                            "src": "7094:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 2922,
                            "name": "DS_DIGEST",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2860,
                            "src": "7103:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7094:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2916,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2871,
                          "src": "7059:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "substring",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1955,
                        "src": "7059:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 2924,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7059:54:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7045:68:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 2926,
                  "nodeType": "ExpressionStatement",
                  "src": "7045:68:9"
                }
              ]
            },
            "id": 2928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readDS",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2871,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6761:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2870,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6761:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2873,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6780:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2872,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6780:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2875,
                  "mutability": "mutable",
                  "name": "length",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6793:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2874,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6793:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6760:45:9"
            },
            "returnParameters": {
              "id": 2879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2878,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "6828:14:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DS_$2869_memory_ptr",
                    "typeString": "struct RRUtils.DS"
                  },
                  "typeName": {
                    "id": 2877,
                    "name": "DS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2869,
                    "src": "6828:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DS_$2869_storage_ptr",
                      "typeString": "struct RRUtils.DS"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6827:16:9"
            },
            "scope": 3396,
            "src": "6745:375:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "RRUtils.NSEC3",
            "id": 2941,
            "members": [
              {
                "constant": false,
                "id": 2930,
                "mutability": "mutable",
                "name": "hashAlgorithm",
                "nodeType": "VariableDeclaration",
                "scope": 2941,
                "src": "7149:19:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2929,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "7149:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2932,
                "mutability": "mutable",
                "name": "flags",
                "nodeType": "VariableDeclaration",
                "scope": 2941,
                "src": "7178:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 2931,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "7178:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2934,
                "mutability": "mutable",
                "name": "iterations",
                "nodeType": "VariableDeclaration",
                "scope": 2941,
                "src": "7199:17:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint16",
                  "typeString": "uint16"
                },
                "typeName": {
                  "id": 2933,
                  "name": "uint16",
                  "nodeType": "ElementaryTypeName",
                  "src": "7199:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2936,
                "mutability": "mutable",
                "name": "salt",
                "nodeType": "VariableDeclaration",
                "scope": 2941,
                "src": "7226:10:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2935,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "7226:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2938,
                "mutability": "mutable",
                "name": "nextHashedOwnerName",
                "nodeType": "VariableDeclaration",
                "scope": 2941,
                "src": "7246:27:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2937,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "7246:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2940,
                "mutability": "mutable",
                "name": "typeBitmap",
                "nodeType": "VariableDeclaration",
                "scope": 2941,
                "src": "7283:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2939,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "7283:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "NSEC3",
            "nodeType": "StructDefinition",
            "scope": 3396,
            "src": "7126:180:9",
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 2944,
            "mutability": "constant",
            "name": "NSEC3_HASH_ALGORITHM",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "7312:38:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2942,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "7312:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 2943,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7349:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2947,
            "mutability": "constant",
            "name": "NSEC3_FLAGS",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "7356:29:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2945,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "7356:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31",
              "id": 2946,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7384:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2950,
            "mutability": "constant",
            "name": "NSEC3_ITERATIONS",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "7391:34:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2948,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "7391:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32",
              "id": 2949,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7424:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2953,
            "mutability": "constant",
            "name": "NSEC3_SALT_LENGTH",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "7431:35:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2951,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "7431:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "34",
              "id": 2952,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7465:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2956,
            "mutability": "constant",
            "name": "NSEC3_SALT",
            "nodeType": "VariableDeclaration",
            "scope": 3396,
            "src": "7472:28:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2954,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "7472:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "35",
              "id": 2955,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "7499:1:9",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5_by_1",
                "typeString": "int_const 5"
              },
              "value": "5"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3078,
              "nodeType": "Block",
              "src": "7612:716:9",
              "statements": [
                {
                  "assignments": [
                    2968
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2968,
                      "mutability": "mutable",
                      "name": "end",
                      "nodeType": "VariableDeclaration",
                      "scope": 3078,
                      "src": "7622:8:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2967,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7622:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2972,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2969,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2960,
                      "src": "7633:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "id": 2970,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2962,
                      "src": "7642:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7633:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7622:26:9"
                },
                {
                  "expression": {
                    "id": 2982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2973,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "7658:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                          "typeString": "struct RRUtils.NSEC3 memory"
                        }
                      },
                      "id": 2975,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "hashAlgorithm",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2930,
                      "src": "7658:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2978,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2960,
                            "src": "7694:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2979,
                            "name": "NSEC3_HASH_ALGORITHM",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2944,
                            "src": "7703:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7694:29:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2976,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2958,
                          "src": "7679:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "7679:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2981,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7679:45:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7658:66:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2983,
                  "nodeType": "ExpressionStatement",
                  "src": "7658:66:9"
                },
                {
                  "expression": {
                    "id": 2993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2984,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "7734:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                          "typeString": "struct RRUtils.NSEC3 memory"
                        }
                      },
                      "id": 2986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "flags",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2932,
                      "src": "7734:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2989,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2960,
                            "src": "7762:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2990,
                            "name": "NSEC3_FLAGS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2947,
                            "src": "7771:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7762:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2987,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2958,
                          "src": "7747:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "7747:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 2992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7747:36:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7734:49:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 2994,
                  "nodeType": "ExpressionStatement",
                  "src": "7734:49:9"
                },
                {
                  "expression": {
                    "id": 3004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2995,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "7793:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                          "typeString": "struct RRUtils.NSEC3 memory"
                        }
                      },
                      "id": 2997,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "iterations",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2934,
                      "src": "7793:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3000,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2960,
                            "src": "7827:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 3001,
                            "name": "NSEC3_ITERATIONS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2950,
                            "src": "7836:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7827:25:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 2998,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2958,
                          "src": "7811:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 2999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint16",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1784,
                        "src": "7811:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint16_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint16)"
                        }
                      },
                      "id": 3003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7811:42:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "7793:60:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 3005,
                  "nodeType": "ExpressionStatement",
                  "src": "7793:60:9"
                },
                {
                  "assignments": [
                    3007
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3007,
                      "mutability": "mutable",
                      "name": "saltLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 3078,
                      "src": "7863:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3006,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7863:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3014,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3010,
                          "name": "offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2960,
                          "src": "7897:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "id": 3011,
                          "name": "NSEC3_SALT_LENGTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2953,
                          "src": "7906:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7897:26:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 3008,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2958,
                        "src": "7882:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3009,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "readUint8",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1764,
                      "src": "7882:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                      }
                    },
                    "id": 3013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7882:42:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7863:61:9"
                },
                {
                  "expression": {
                    "id": 3019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3015,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2960,
                      "src": "7934:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3018,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3016,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2960,
                        "src": "7943:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "id": 3017,
                        "name": "NSEC3_SALT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2956,
                        "src": "7952:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7943:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7934:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3020,
                  "nodeType": "ExpressionStatement",
                  "src": "7934:28:9"
                },
                {
                  "expression": {
                    "id": 3029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3021,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "7972:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                          "typeString": "struct RRUtils.NSEC3 memory"
                        }
                      },
                      "id": 3023,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "salt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2936,
                      "src": "7972:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3026,
                          "name": "offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2960,
                          "src": "7999:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 3027,
                          "name": "saltLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3007,
                          "src": "8007:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "id": 3024,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2958,
                          "src": "7984:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 3025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "substring",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1955,
                        "src": "7984:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 3028,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7984:34:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7972:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 3030,
                  "nodeType": "ExpressionStatement",
                  "src": "7972:46:9"
                },
                {
                  "expression": {
                    "id": 3033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3031,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2960,
                      "src": "8028:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 3032,
                      "name": "saltLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "8038:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "8028:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3034,
                  "nodeType": "ExpressionStatement",
                  "src": "8028:20:9"
                },
                {
                  "assignments": [
                    3036
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3036,
                      "mutability": "mutable",
                      "name": "nextLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 3078,
                      "src": "8058:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3035,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8058:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3041,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3039,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2960,
                        "src": "8092:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 3037,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2958,
                        "src": "8077:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "readUint8",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1764,
                      "src": "8077:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                      }
                    },
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8077:22:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8058:41:9"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3043,
                          "name": "nextLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3036,
                          "src": "8117:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 3044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8131:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "8117:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3042,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8109:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8109:25:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3047,
                  "nodeType": "ExpressionStatement",
                  "src": "8109:25:9"
                },
                {
                  "expression": {
                    "id": 3050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3048,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2960,
                      "src": "8144:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 3049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8154:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8144:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3051,
                  "nodeType": "ExpressionStatement",
                  "src": "8144:11:9"
                },
                {
                  "expression": {
                    "id": 3060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3052,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "8165:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                          "typeString": "struct RRUtils.NSEC3 memory"
                        }
                      },
                      "id": 3054,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextHashedOwnerName",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2938,
                      "src": "8165:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3057,
                          "name": "offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2960,
                          "src": "8208:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 3058,
                          "name": "nextLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3036,
                          "src": "8216:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "id": 3055,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2958,
                          "src": "8192:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 3056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readBytesN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1872,
                        "src": "8192:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                        }
                      },
                      "id": 3059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8192:35:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8165:62:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3061,
                  "nodeType": "ExpressionStatement",
                  "src": "8165:62:9"
                },
                {
                  "expression": {
                    "id": 3064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3062,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2960,
                      "src": "8237:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 3063,
                      "name": "nextLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3036,
                      "src": "8247:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "8237:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3065,
                  "nodeType": "ExpressionStatement",
                  "src": "8237:20:9"
                },
                {
                  "expression": {
                    "id": 3076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3066,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2965,
                        "src": "8267:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                          "typeString": "struct RRUtils.NSEC3 memory"
                        }
                      },
                      "id": 3068,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "typeBitmap",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2940,
                      "src": "8267:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3071,
                          "name": "offset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2960,
                          "src": "8300:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3072,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2968,
                            "src": "8308:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 3073,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2960,
                            "src": "8314:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8308:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 3069,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2958,
                          "src": "8285:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 3070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "substring",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1955,
                        "src": "8285:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 3075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8285:36:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "8267:54:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 3077,
                  "nodeType": "ExpressionStatement",
                  "src": "8267:54:9"
                }
              ]
            },
            "id": 3079,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readNSEC3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2958,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3079,
                  "src": "7526:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2957,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7526:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2960,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 3079,
                  "src": "7545:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2959,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7545:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2962,
                  "mutability": "mutable",
                  "name": "length",
                  "nodeType": "VariableDeclaration",
                  "scope": 3079,
                  "src": "7558:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2961,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7558:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7525:45:9"
            },
            "returnParameters": {
              "id": 2966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2965,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 3079,
                  "src": "7593:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                    "typeString": "struct RRUtils.NSEC3"
                  },
                  "typeName": {
                    "id": 2964,
                    "name": "NSEC3",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2941,
                    "src": "7593:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_NSEC3_$2941_storage_ptr",
                      "typeString": "struct RRUtils.NSEC3"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7592:19:9"
            },
            "scope": 3396,
            "src": "7507:821:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3095,
              "nodeType": "Block",
              "src": "8421:67:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3089,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3081,
                          "src": "8454:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                            "typeString": "struct RRUtils.NSEC3 memory"
                          }
                        },
                        "id": 3090,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "typeBitmap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2940,
                        "src": "8454:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 3091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8471:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "id": 3092,
                        "name": "rrtype",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3083,
                        "src": "8474:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 3088,
                      "name": "checkTypeBitmap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3096,
                        3221
                      ],
                      "referencedDeclaration": 3221,
                      "src": "8438:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint16_$returns$_t_bool_$",
                        "typeString": "function (bytes memory,uint256,uint16) pure returns (bool)"
                      }
                    },
                    "id": 3093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8438:43:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3087,
                  "id": 3094,
                  "nodeType": "Return",
                  "src": "8431:50:9"
                }
              ]
            },
            "id": 3096,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkTypeBitmap",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3081,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 3096,
                  "src": "8359:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_NSEC3_$2941_memory_ptr",
                    "typeString": "struct RRUtils.NSEC3"
                  },
                  "typeName": {
                    "id": 3080,
                    "name": "NSEC3",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2941,
                    "src": "8359:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_NSEC3_$2941_storage_ptr",
                      "typeString": "struct RRUtils.NSEC3"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3083,
                  "mutability": "mutable",
                  "name": "rrtype",
                  "nodeType": "VariableDeclaration",
                  "scope": 3096,
                  "src": "8378:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3082,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "8378:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8358:34:9"
            },
            "returnParameters": {
              "id": 3087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3086,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3096,
                  "src": "8415:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3085,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8415:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8414:6:9"
            },
            "scope": 3396,
            "src": "8334:154:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3220,
              "nodeType": "Block",
              "src": "8910:951:9",
              "statements": [
                {
                  "assignments": [
                    3109
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3109,
                      "mutability": "mutable",
                      "name": "typeWindow",
                      "nodeType": "VariableDeclaration",
                      "scope": 3220,
                      "src": "8920:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3108,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8920:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3116,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "id": 3114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3112,
                          "name": "rrtype",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3103,
                          "src": "8945:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">>",
                        "rightExpression": {
                          "hexValue": "38",
                          "id": 3113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8955:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "src": "8945:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 3111,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8939:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": {
                        "id": 3110,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8939:5:9",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8939:18:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8920:37:9"
                },
                {
                  "assignments": [
                    3118
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3118,
                      "mutability": "mutable",
                      "name": "windowByte",
                      "nodeType": "VariableDeclaration",
                      "scope": 3220,
                      "src": "8967:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3117,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8967:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3128,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "id": 3126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 3123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3121,
                                "name": "rrtype",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3103,
                                "src": "8993:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "hexValue": "30786666",
                                "id": 3122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9002:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "0xff"
                              },
                              "src": "8993:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "id": 3124,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8992:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "hexValue": "38",
                          "id": 3125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9010:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "src": "8992:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 3120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8986:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": {
                        "id": 3119,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "8986:5:9",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8986:26:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8967:45:9"
                },
                {
                  "assignments": [
                    3130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3130,
                      "mutability": "mutable",
                      "name": "windowBitmask",
                      "nodeType": "VariableDeclaration",
                      "scope": 3220,
                      "src": "9022:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3129,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9022:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3151,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 3135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9056:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9050:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 3133,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "9050:5:9",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9050:8:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<<",
                        "rightExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 3147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "37",
                                    "id": 3139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9069:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    }
                                  ],
                                  "id": 3138,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9063:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 3137,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9063:5:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9063:8:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    "id": 3145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3143,
                                      "name": "rrtype",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3103,
                                      "src": "9080:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307837",
                                      "id": 3144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9089:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "0x7"
                                    },
                                    "src": "9080:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "id": 3142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9074:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 3141,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9074:5:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9074:19:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "9063:30:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "id": 3148,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9062:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "9050:44:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 3132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9044:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": {
                        "id": 3131,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9044:5:9",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9044:51:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9022:73:9"
                },
                {
                  "body": {
                    "id": 3216,
                    "nodeType": "Block",
                    "src": "9151:681:9",
                    "statements": [
                      {
                        "assignments": [
                          3161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3161,
                            "mutability": "mutable",
                            "name": "window",
                            "nodeType": "VariableDeclaration",
                            "scope": 3216,
                            "src": "9165:12:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 3160,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "9165:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3166,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3164,
                              "name": "off",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3153,
                              "src": "9197:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 3162,
                              "name": "bitmap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3099,
                              "src": "9180:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1764,
                            "src": "9180:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 3165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9180:21:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9165:36:9"
                      },
                      {
                        "assignments": [
                          3168
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3168,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "scope": 3216,
                            "src": "9215:9:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 3167,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "9215:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3175,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3171,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3153,
                                "src": "9244:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9250:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "9244:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 3169,
                              "name": "bitmap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3099,
                              "src": "9227:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "readUint8",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1764,
                            "src": "9227:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                            }
                          },
                          "id": 3174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9227:25:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9215:37:9"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3176,
                            "name": "typeWindow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3109,
                            "src": "9270:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 3177,
                            "name": "window",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3161,
                            "src": "9283:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "9270:19:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3182,
                              "name": "typeWindow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3109,
                              "src": "9408:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 3183,
                              "name": "window",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3161,
                              "src": "9422:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "9408:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 3213,
                            "nodeType": "Block",
                            "src": "9734:88:9",
                            "statements": [
                              {
                                "expression": {
                                  "id": 3211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 3207,
                                    "name": "off",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3153,
                                    "src": "9793:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 3210,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3208,
                                      "name": "len",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3168,
                                      "src": "9800:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 3209,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9806:1:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "9800:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "9793:14:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3212,
                                "nodeType": "ExpressionStatement",
                                "src": "9793:14:9"
                              }
                            ]
                          },
                          "id": 3214,
                          "nodeType": "IfStatement",
                          "src": "9404:418:9",
                          "trueBody": {
                            "id": 3206,
                            "nodeType": "Block",
                            "src": "9430:298:9",
                            "statements": [
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 3187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3185,
                                    "name": "len",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3168,
                                    "src": "9494:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "id": 3186,
                                    "name": "windowByte",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3118,
                                    "src": "9501:10:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "9494:17:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 3191,
                                "nodeType": "IfStatement",
                                "src": "9490:138:9",
                                "trueBody": {
                                  "id": 3190,
                                  "nodeType": "Block",
                                  "src": "9513:115:9",
                                  "statements": [
                                    {
                                      "expression": {
                                        "hexValue": "66616c7365",
                                        "id": 3188,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9604:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "functionReturnParameters": 3107,
                                      "id": 3189,
                                      "nodeType": "Return",
                                      "src": "9597:12:9"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 3204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 3201,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3198,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 3196,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 3194,
                                                  "name": "off",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3153,
                                                  "src": "9670:3:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "+",
                                                "rightExpression": {
                                                  "id": 3195,
                                                  "name": "windowByte",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3118,
                                                  "src": "9676:10:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "9670:16:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "hexValue": "32",
                                                "id": 3197,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9689:1:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "src": "9670:20:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 3192,
                                              "name": "bitmap",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3099,
                                              "src": "9653:6:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 3193,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "readUint8",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1764,
                                            "src": "9653:16:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                                              "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                                            }
                                          },
                                          "id": 3199,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9653:38:9",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&",
                                        "rightExpression": {
                                          "id": 3200,
                                          "name": "windowBitmask",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3130,
                                          "src": "9694:13:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "9653:54:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "id": 3202,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "9652:56:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 3203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9712:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "9652:61:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "functionReturnParameters": 3107,
                                "id": 3205,
                                "nodeType": "Return",
                                "src": "9645:68:9"
                              }
                            ]
                          }
                        },
                        "id": 3215,
                        "nodeType": "IfStatement",
                        "src": "9266:556:9",
                        "trueBody": {
                          "id": 3181,
                          "nodeType": "Block",
                          "src": "9291:107:9",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 3179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9378:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 3107,
                              "id": 3180,
                              "nodeType": "Return",
                              "src": "9371:12:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3156,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3153,
                      "src": "9129:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3157,
                        "name": "bitmap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3099,
                        "src": "9135:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3158,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "9135:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9129:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3217,
                  "initializationExpression": {
                    "assignments": [
                      3153
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3153,
                        "mutability": "mutable",
                        "name": "off",
                        "nodeType": "VariableDeclaration",
                        "scope": 3217,
                        "src": "9110:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3152,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9110:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3155,
                    "initialValue": {
                      "id": 3154,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3101,
                      "src": "9121:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9110:17:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "9105:727:9"
                },
                {
                  "expression": {
                    "hexValue": "66616c7365",
                    "id": 3218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9849:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 3107,
                  "id": 3219,
                  "nodeType": "Return",
                  "src": "9842:12:9"
                }
              ]
            },
            "documentation": {
              "id": 3097,
              "nodeType": "StructuredDocumentation",
              "src": "8494:308:9",
              "text": " @dev Checks if a given RR type exists in a type bitmap.\n @param bitmap The byte string to read the type bitmap from.\n @param offset The offset to start reading at.\n @param rrtype The RR type to check for.\n @return True if the type is found in the bitmap, false otherwise."
            },
            "id": 3221,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkTypeBitmap",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3099,
                  "mutability": "mutable",
                  "name": "bitmap",
                  "nodeType": "VariableDeclaration",
                  "scope": 3221,
                  "src": "8832:19:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3098,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8832:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3101,
                  "mutability": "mutable",
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 3221,
                  "src": "8853:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3100,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8853:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3103,
                  "mutability": "mutable",
                  "name": "rrtype",
                  "nodeType": "VariableDeclaration",
                  "scope": 3221,
                  "src": "8866:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3102,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "8866:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8831:49:9"
            },
            "returnParameters": {
              "id": 3107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3106,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3221,
                  "src": "8904:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3105,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8904:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8903:6:9"
            },
            "scope": 3396,
            "src": "8807:1054:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3375,
              "nodeType": "Block",
              "src": "9956:1207:9",
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 3232,
                        "name": "other",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3225,
                        "src": "9982:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 3230,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3223,
                        "src": "9970:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "equals",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1747,
                      "src": "9970:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                      }
                    },
                    "id": 3233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9970:18:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3237,
                  "nodeType": "IfStatement",
                  "src": "9966:57:9",
                  "trueBody": {
                    "id": 3236,
                    "nodeType": "Block",
                    "src": "9990:33:9",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 3234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10011:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 3229,
                        "id": 3235,
                        "nodeType": "Return",
                        "src": "10004:8:9"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3239
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3239,
                      "mutability": "mutable",
                      "name": "off",
                      "nodeType": "VariableDeclaration",
                      "scope": 3375,
                      "src": "10033:8:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3238,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10033:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3240,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10033:8:9"
                },
                {
                  "assignments": [
                    3242
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3242,
                      "mutability": "mutable",
                      "name": "otheroff",
                      "nodeType": "VariableDeclaration",
                      "scope": 3375,
                      "src": "10051:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3241,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10051:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3243,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10051:13:9"
                },
                {
                  "assignments": [
                    3245
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3245,
                      "mutability": "mutable",
                      "name": "prevoff",
                      "nodeType": "VariableDeclaration",
                      "scope": 3375,
                      "src": "10074:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3244,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10074:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3246,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10074:12:9"
                },
                {
                  "assignments": [
                    3248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3248,
                      "mutability": "mutable",
                      "name": "otherprevoff",
                      "nodeType": "VariableDeclaration",
                      "scope": 3375,
                      "src": "10096:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3247,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10096:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3249,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10096:17:9"
                },
                {
                  "assignments": [
                    3251
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3251,
                      "mutability": "mutable",
                      "name": "counts",
                      "nodeType": "VariableDeclaration",
                      "scope": 3375,
                      "src": "10123:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3250,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10123:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3256,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3253,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3223,
                        "src": "10148:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 3254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10154:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3252,
                      "name": "labelCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2404,
                      "src": "10137:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 3255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10137:19:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10123:33:9"
                },
                {
                  "assignments": [
                    3258
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3258,
                      "mutability": "mutable",
                      "name": "othercounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 3375,
                      "src": "10166:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3257,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10166:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3263,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3260,
                        "name": "other",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3225,
                        "src": "10196:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 3261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10203:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3259,
                      "name": "labelCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2404,
                      "src": "10185:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 3262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10185:20:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10166:39:9"
                },
                {
                  "body": {
                    "id": 3281,
                    "nodeType": "Block",
                    "src": "10338:99:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 3269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3267,
                            "name": "prevoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3245,
                            "src": "10352:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3268,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3239,
                            "src": "10362:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10352:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3270,
                        "nodeType": "ExpressionStatement",
                        "src": "10352:13:9"
                      },
                      {
                        "expression": {
                          "id": 3276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3271,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3239,
                            "src": "10379:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3273,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "10394:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3274,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3239,
                                "src": "10400:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3272,
                              "name": "progress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3395,
                              "src": "10385:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10385:19:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10379:25:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3277,
                        "nodeType": "ExpressionStatement",
                        "src": "10379:25:9"
                      },
                      {
                        "expression": {
                          "id": 3279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "10418:8:9",
                          "subExpression": {
                            "id": 3278,
                            "name": "counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3251,
                            "src": "10418:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3280,
                        "nodeType": "ExpressionStatement",
                        "src": "10418:8:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3264,
                      "name": "counts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3251,
                      "src": "10316:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 3265,
                      "name": "othercounts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3258,
                      "src": "10325:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10316:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3282,
                  "nodeType": "WhileStatement",
                  "src": "10309:128:9"
                },
                {
                  "body": {
                    "id": 3300,
                    "nodeType": "Block",
                    "src": "10476:125:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 3288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3286,
                            "name": "otherprevoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3248,
                            "src": "10490:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3287,
                            "name": "otheroff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3242,
                            "src": "10505:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10490:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3289,
                        "nodeType": "ExpressionStatement",
                        "src": "10490:23:9"
                      },
                      {
                        "expression": {
                          "id": 3295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3290,
                            "name": "otheroff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3242,
                            "src": "10527:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3292,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3225,
                                "src": "10547:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3293,
                                "name": "otheroff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3242,
                                "src": "10554:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3291,
                              "name": "progress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3395,
                              "src": "10538:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10538:25:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10527:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3296,
                        "nodeType": "ExpressionStatement",
                        "src": "10527:36:9"
                      },
                      {
                        "expression": {
                          "id": 3298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "10577:13:9",
                          "subExpression": {
                            "id": 3297,
                            "name": "othercounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3258,
                            "src": "10577:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3299,
                        "nodeType": "ExpressionStatement",
                        "src": "10577:13:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3283,
                      "name": "othercounts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3258,
                      "src": "10454:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 3284,
                      "name": "counts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3251,
                      "src": "10468:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10454:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3301,
                  "nodeType": "WhileStatement",
                  "src": "10447:154:9"
                },
                {
                  "body": {
                    "id": 3339,
                    "nodeType": "Block",
                    "src": "10726:189:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 3315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3313,
                            "name": "prevoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3245,
                            "src": "10740:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3314,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3239,
                            "src": "10750:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10740:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3316,
                        "nodeType": "ExpressionStatement",
                        "src": "10740:13:9"
                      },
                      {
                        "expression": {
                          "id": 3322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3317,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3239,
                            "src": "10767:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3319,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3223,
                                "src": "10782:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3320,
                                "name": "off",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3239,
                                "src": "10788:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3318,
                              "name": "progress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3395,
                              "src": "10773:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10773:19:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10767:25:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3323,
                        "nodeType": "ExpressionStatement",
                        "src": "10767:25:9"
                      },
                      {
                        "expression": {
                          "id": 3326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3324,
                            "name": "otherprevoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3248,
                            "src": "10806:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3325,
                            "name": "otheroff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3242,
                            "src": "10821:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10806:23:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3327,
                        "nodeType": "ExpressionStatement",
                        "src": "10806:23:9"
                      },
                      {
                        "expression": {
                          "id": 3333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3328,
                            "name": "otheroff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3242,
                            "src": "10843:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3330,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3225,
                                "src": "10863:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 3331,
                                "name": "otheroff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3242,
                                "src": "10870:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3329,
                              "name": "progress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3395,
                              "src": "10854:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10854:25:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10843:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3334,
                        "nodeType": "ExpressionStatement",
                        "src": "10843:36:9"
                      },
                      {
                        "expression": {
                          "id": 3337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3335,
                            "name": "counts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3251,
                            "src": "10893:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 3336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10903:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10893:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3338,
                        "nodeType": "ExpressionStatement",
                        "src": "10893:11:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3302,
                        "name": "counts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3251,
                        "src": "10676:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 3303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10685:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "10676:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "id": 3311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "10690:34:9",
                      "subExpression": {
                        "arguments": [
                          {
                            "id": 3307,
                            "name": "off",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3239,
                            "src": "10703:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 3308,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3225,
                            "src": "10708:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "id": 3309,
                            "name": "otheroff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3242,
                            "src": "10715:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3305,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3223,
                            "src": "10691:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "equals",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1693,
                          "src": "10691:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"
                          }
                        },
                        "id": 3310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10691:33:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10676:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3340,
                  "nodeType": "WhileStatement",
                  "src": "10669:246:9"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3341,
                      "name": "off",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3239,
                      "src": "10929:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3342,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10936:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10929:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3348,
                  "nodeType": "IfStatement",
                  "src": "10925:48:9",
                  "trueBody": {
                    "id": 3347,
                    "nodeType": "Block",
                    "src": "10939:34:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 3345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "10960:2:9",
                          "subExpression": {
                            "hexValue": "31",
                            "id": 3344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10961:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_minus_1_by_1",
                            "typeString": "int_const -1"
                          }
                        },
                        "functionReturnParameters": 3229,
                        "id": 3346,
                        "nodeType": "Return",
                        "src": "10953:9:9"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3349,
                      "name": "otheroff",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3242,
                      "src": "10985:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3350,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10997:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10985:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3355,
                  "nodeType": "IfStatement",
                  "src": "10982:51:9",
                  "trueBody": {
                    "id": 3354,
                    "nodeType": "Block",
                    "src": "11000:33:9",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "31",
                          "id": 3352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11021:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "functionReturnParameters": 3229,
                        "id": 3353,
                        "nodeType": "Return",
                        "src": "11014:8:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3358,
                          "name": "prevoff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3245,
                          "src": "11063:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 3359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11073:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "11063:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3363,
                            "name": "prevoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3245,
                            "src": "11091:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3361,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3223,
                            "src": "11076:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "readUint8",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1764,
                          "src": "11076:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                          }
                        },
                        "id": 3364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11076:23:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 3365,
                        "name": "other",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3225,
                        "src": "11101:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3366,
                          "name": "otherprevoff",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3248,
                          "src": "11108:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 3367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11123:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "11108:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3371,
                            "name": "otherprevoff",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3248,
                            "src": "11142:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3369,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3225,
                            "src": "11126:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "readUint8",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1764,
                          "src": "11126:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                          }
                        },
                        "id": 3372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11126:29:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "id": 3356,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3223,
                        "src": "11050:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3357,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "compare",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1633,
                      "src": "11050:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                      }
                    },
                    "id": 3373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11050:106:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 3229,
                  "id": 3374,
                  "nodeType": "Return",
                  "src": "11043:113:9"
                }
              ]
            },
            "id": 3376,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "compareNames",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3226,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3223,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 3376,
                  "src": "9889:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3222,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9889:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3225,
                  "mutability": "mutable",
                  "name": "other",
                  "nodeType": "VariableDeclaration",
                  "scope": 3376,
                  "src": "9908:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3224,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9908:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9888:39:9"
            },
            "returnParameters": {
              "id": 3229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3228,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3376,
                  "src": "9951:3:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3227,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "9951:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9950:5:9"
            },
            "scope": 3396,
            "src": "9867:1296:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3394,
              "nodeType": "Block",
              "src": "11244:53:9",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3385,
                        "name": "off",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3380,
                        "src": "11261:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 3386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11267:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "11261:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 3390,
                          "name": "off",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3380,
                          "src": "11286:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 3388,
                          "name": "body",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3378,
                          "src": "11271:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 3389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "readUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1764,
                        "src": "11271:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (uint8)"
                        }
                      },
                      "id": 3391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11271:19:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "11261:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3384,
                  "id": 3393,
                  "nodeType": "Return",
                  "src": "11254:36:9"
                }
              ]
            },
            "id": 3395,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "progress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3378,
                  "mutability": "mutable",
                  "name": "body",
                  "nodeType": "VariableDeclaration",
                  "scope": 3395,
                  "src": "11187:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3377,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11187:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3380,
                  "mutability": "mutable",
                  "name": "off",
                  "nodeType": "VariableDeclaration",
                  "scope": 3395,
                  "src": "11206:8:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3379,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11206:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11186:29:9"
            },
            "returnParameters": {
              "id": 3384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3383,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3395,
                  "src": "11238:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3382,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11238:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11237:6:9"
            },
            "scope": 3396,
            "src": "11169:128:9",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 3397,
        "src": "196:11103:9"
      }
    ],
    "src": "0:11300:9"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
      "exportedSymbols": {
        "Buffer": [
          1452
        ],
        "BytesUtils": [
          2183
        ],
        "RRUtils": [
          3396
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".4"
          ]
        },
        "id": 2275,
        "name": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "attributes": {
          "SourceUnit": 2184,
          "absolutePath": "@ensdomains/dnssec-oracle/contracts/BytesUtils.sol",
          "file": "./BytesUtils.sol",
          "scope": 3397,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2276,
        "name": "ImportDirective",
        "src": "25:26:9"
      },
      {
        "attributes": {
          "SourceUnit": 1453,
          "absolutePath": "@ensdomains/buffer/contracts/Buffer.sol",
          "file": "@ensdomains/buffer/contracts/Buffer.sol",
          "scope": 3397,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2277,
        "name": "ImportDirective",
        "src": "52:49:9"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3396
          ],
          "name": "RRUtils",
          "scope": 3397
        },
        "children": [
          {
            "attributes": {
              "text": " @dev RRUtils is a library that provides utilities for parsing DNS resource records."
            },
            "id": 2278,
            "name": "StructuredDocumentation",
            "src": "103:92:9"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "BytesUtils",
                  "referencedDeclaration": 2183,
                  "type": "library BytesUtils"
                },
                "id": 2279,
                "name": "UserDefinedTypeName",
                "src": "224:10:9"
              }
            ],
            "id": 2280,
            "name": "UsingForDirective",
            "src": "218:23:9"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "Buffer",
                  "referencedDeclaration": 1452,
                  "type": "library Buffer"
                },
                "id": 2281,
                "name": "UserDefinedTypeName",
                "src": "252:6:9"
              }
            ],
            "id": 2282,
            "name": "UsingForDirective",
            "src": "246:19:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "nameLength",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return The length of the DNS name at 'offset', in bytes."
                },
                "id": 2283,
                "name": "StructuredDocumentation",
                "src": "271:258:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2330,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2284,
                        "name": "ElementaryTypeName",
                        "src": "554:5:9"
                      }
                    ],
                    "id": 2285,
                    "name": "VariableDeclaration",
                    "src": "554:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 2330,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2286,
                        "name": "ElementaryTypeName",
                        "src": "573:4:9"
                      }
                    ],
                    "id": 2287,
                    "name": "VariableDeclaration",
                    "src": "573:11:9"
                  }
                ],
                "id": 2288,
                "name": "ParameterList",
                "src": "553:32:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2330,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2289,
                        "name": "ElementaryTypeName",
                        "src": "608:4:9"
                      }
                    ],
                    "id": 2290,
                    "name": "VariableDeclaration",
                    "src": "608:4:9"
                  }
                ],
                "id": 2291,
                "name": "ParameterList",
                "src": "607:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2293
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "idx",
                          "scope": 2329,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2292,
                            "name": "ElementaryTypeName",
                            "src": "624:4:9"
                          }
                        ],
                        "id": 2293,
                        "name": "VariableDeclaration",
                        "src": "624:8:9"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2287,
                          "type": "uint256",
                          "value": "offset"
                        },
                        "id": 2294,
                        "name": "Identifier",
                        "src": "635:6:9"
                      }
                    ],
                    "id": 2295,
                    "name": "VariableDeclarationStatement",
                    "src": "624:17:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 2296,
                        "name": "Literal",
                        "src": "658:4:9"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -3,
                                      "type": "function (bool) pure",
                                      "value": "assert"
                                    },
                                    "id": 2297,
                                    "name": "Identifier",
                                    "src": "678:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2293,
                                          "type": "uint256",
                                          "value": "idx"
                                        },
                                        "id": 2298,
                                        "name": "Identifier",
                                        "src": "685:3:9"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2285,
                                              "type": "bytes memory",
                                              "value": "self"
                                            },
                                            "id": 2299,
                                            "name": "Identifier",
                                            "src": "691:4:9"
                                          }
                                        ],
                                        "id": 2300,
                                        "name": "MemberAccess",
                                        "src": "691:11:9"
                                      }
                                    ],
                                    "id": 2301,
                                    "name": "BinaryOperation",
                                    "src": "685:17:9"
                                  }
                                ],
                                "id": 2302,
                                "name": "FunctionCall",
                                "src": "678:25:9"
                              }
                            ],
                            "id": 2303,
                            "name": "ExpressionStatement",
                            "src": "678:25:9"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2305
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "labelLen",
                                  "scope": 2323,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": "uint256"
                                    },
                                    "id": 2304,
                                    "name": "ElementaryTypeName",
                                    "src": "717:4:9"
                                  }
                                ],
                                "id": 2305,
                                "name": "VariableDeclaration",
                                "src": "717:13:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint8",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "readUint8",
                                      "referencedDeclaration": 1764,
                                      "type": "function (bytes memory,uint256) pure returns (uint8)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2285,
                                          "type": "bytes memory",
                                          "value": "self"
                                        },
                                        "id": 2306,
                                        "name": "Identifier",
                                        "src": "733:4:9"
                                      }
                                    ],
                                    "id": 2307,
                                    "name": "MemberAccess",
                                    "src": "733:14:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2293,
                                      "type": "uint256",
                                      "value": "idx"
                                    },
                                    "id": 2308,
                                    "name": "Identifier",
                                    "src": "748:3:9"
                                  }
                                ],
                                "id": 2309,
                                "name": "FunctionCall",
                                "src": "733:19:9"
                              }
                            ],
                            "id": 2310,
                            "name": "VariableDeclarationStatement",
                            "src": "717:35:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2293,
                                      "type": "uint256",
                                      "value": "idx"
                                    },
                                    "id": 2311,
                                    "name": "Identifier",
                                    "src": "766:3:9"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2305,
                                          "type": "uint256",
                                          "value": "labelLen"
                                        },
                                        "id": 2312,
                                        "name": "Identifier",
                                        "src": "773:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 2313,
                                        "name": "Literal",
                                        "src": "784:1:9"
                                      }
                                    ],
                                    "id": 2314,
                                    "name": "BinaryOperation",
                                    "src": "773:12:9"
                                  }
                                ],
                                "id": 2315,
                                "name": "Assignment",
                                "src": "766:19:9"
                              }
                            ],
                            "id": 2316,
                            "name": "ExpressionStatement",
                            "src": "766:19:9"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2305,
                                      "type": "uint256",
                                      "value": "labelLen"
                                    },
                                    "id": 2317,
                                    "name": "Identifier",
                                    "src": "803:8:9"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2318,
                                    "name": "Literal",
                                    "src": "815:1:9"
                                  }
                                ],
                                "id": 2319,
                                "name": "BinaryOperation",
                                "src": "803:13:9"
                              },
                              {
                                "children": [
                                  {
                                    "id": 2320,
                                    "name": "Break",
                                    "src": "836:5:9"
                                  }
                                ],
                                "id": 2321,
                                "name": "Block",
                                "src": "818:38:9"
                              }
                            ],
                            "id": 2322,
                            "name": "IfStatement",
                            "src": "799:57:9"
                          }
                        ],
                        "id": 2323,
                        "name": "Block",
                        "src": "664:202:9"
                      }
                    ],
                    "id": 2324,
                    "name": "WhileStatement",
                    "src": "651:215:9"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2291
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2293,
                              "type": "uint256",
                              "value": "idx"
                            },
                            "id": 2325,
                            "name": "Identifier",
                            "src": "882:3:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2287,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 2326,
                            "name": "Identifier",
                            "src": "888:6:9"
                          }
                        ],
                        "id": 2327,
                        "name": "BinaryOperation",
                        "src": "882:12:9"
                      }
                    ],
                    "id": 2328,
                    "name": "Return",
                    "src": "875:19:9"
                  }
                ],
                "id": 2329,
                "name": "Block",
                "src": "614:287:9"
              }
            ],
            "id": 2330,
            "name": "FunctionDefinition",
            "src": "534:367:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "readName",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns a DNS format name at the specified offset of self.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return ret The name."
                },
                "id": 2331,
                "name": "StructuredDocumentation",
                "src": "907:214:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2354,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2332,
                        "name": "ElementaryTypeName",
                        "src": "1144:5:9"
                      }
                    ],
                    "id": 2333,
                    "name": "VariableDeclaration",
                    "src": "1144:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 2354,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2334,
                        "name": "ElementaryTypeName",
                        "src": "1163:4:9"
                      }
                    ],
                    "id": 2335,
                    "name": "VariableDeclaration",
                    "src": "1163:11:9"
                  }
                ],
                "id": 2336,
                "name": "ParameterList",
                "src": "1143:32:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ret",
                      "scope": 2354,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2337,
                        "name": "ElementaryTypeName",
                        "src": "1198:5:9"
                      }
                    ],
                    "id": 2338,
                    "name": "VariableDeclaration",
                    "src": "1198:16:9"
                  }
                ],
                "id": 2339,
                "name": "ParameterList",
                "src": "1197:18:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2341
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "len",
                          "scope": 2353,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2340,
                            "name": "ElementaryTypeName",
                            "src": "1226:4:9"
                          }
                        ],
                        "id": 2341,
                        "name": "VariableDeclaration",
                        "src": "1226:8:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2330,
                              "type": "function (bytes memory,uint256) pure returns (uint256)",
                              "value": "nameLength"
                            },
                            "id": 2342,
                            "name": "Identifier",
                            "src": "1237:10:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2333,
                              "type": "bytes memory",
                              "value": "self"
                            },
                            "id": 2343,
                            "name": "Identifier",
                            "src": "1248:4:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2335,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 2344,
                            "name": "Identifier",
                            "src": "1254:6:9"
                          }
                        ],
                        "id": 2345,
                        "name": "FunctionCall",
                        "src": "1237:24:9"
                      }
                    ],
                    "id": 2346,
                    "name": "VariableDeclarationStatement",
                    "src": "1226:35:9"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2339
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "substring",
                              "referencedDeclaration": 1955,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2333,
                                  "type": "bytes memory",
                                  "value": "self"
                                },
                                "id": 2347,
                                "name": "Identifier",
                                "src": "1278:4:9"
                              }
                            ],
                            "id": 2348,
                            "name": "MemberAccess",
                            "src": "1278:14:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2335,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 2349,
                            "name": "Identifier",
                            "src": "1293:6:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2341,
                              "type": "uint256",
                              "value": "len"
                            },
                            "id": 2350,
                            "name": "Identifier",
                            "src": "1301:3:9"
                          }
                        ],
                        "id": 2351,
                        "name": "FunctionCall",
                        "src": "1278:27:9"
                      }
                    ],
                    "id": 2352,
                    "name": "Return",
                    "src": "1271:34:9"
                  }
                ],
                "id": 2353,
                "name": "Block",
                "src": "1216:96:9"
              }
            ],
            "id": 2354,
            "name": "FunctionDefinition",
            "src": "1126:186:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "labelCount",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n @param self The byte array to read a name from.\n @param offset The offset to start reading at.\n @return The number of labels in the DNS name at 'offset', in bytes."
                },
                "id": 2355,
                "name": "StructuredDocumentation",
                "src": "1318:269:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2404,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2356,
                        "name": "ElementaryTypeName",
                        "src": "1612:5:9"
                      }
                    ],
                    "id": 2357,
                    "name": "VariableDeclaration",
                    "src": "1612:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 2404,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2358,
                        "name": "ElementaryTypeName",
                        "src": "1631:4:9"
                      }
                    ],
                    "id": 2359,
                    "name": "VariableDeclaration",
                    "src": "1631:11:9"
                  }
                ],
                "id": 2360,
                "name": "ParameterList",
                "src": "1611:32:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2404,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2361,
                        "name": "ElementaryTypeName",
                        "src": "1666:4:9"
                      }
                    ],
                    "id": 2362,
                    "name": "VariableDeclaration",
                    "src": "1666:4:9"
                  }
                ],
                "id": 2363,
                "name": "ParameterList",
                "src": "1665:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2365
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "count",
                          "scope": 2403,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2364,
                            "name": "ElementaryTypeName",
                            "src": "1682:4:9"
                          }
                        ],
                        "id": 2365,
                        "name": "VariableDeclaration",
                        "src": "1682:10:9"
                      },
                      {
                        "attributes": {
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 2366,
                        "name": "Literal",
                        "src": "1695:1:9"
                      }
                    ],
                    "id": 2367,
                    "name": "VariableDeclarationStatement",
                    "src": "1682:14:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 2368,
                        "name": "Literal",
                        "src": "1713:4:9"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -3,
                                      "type": "function (bool) pure",
                                      "value": "assert"
                                    },
                                    "id": 2369,
                                    "name": "Identifier",
                                    "src": "1733:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "<",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2359,
                                          "type": "uint256",
                                          "value": "offset"
                                        },
                                        "id": 2370,
                                        "name": "Identifier",
                                        "src": "1740:6:9"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2357,
                                              "type": "bytes memory",
                                              "value": "self"
                                            },
                                            "id": 2371,
                                            "name": "Identifier",
                                            "src": "1749:4:9"
                                          }
                                        ],
                                        "id": 2372,
                                        "name": "MemberAccess",
                                        "src": "1749:11:9"
                                      }
                                    ],
                                    "id": 2373,
                                    "name": "BinaryOperation",
                                    "src": "1740:20:9"
                                  }
                                ],
                                "id": 2374,
                                "name": "FunctionCall",
                                "src": "1733:28:9"
                              }
                            ],
                            "id": 2375,
                            "name": "ExpressionStatement",
                            "src": "1733:28:9"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2377
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "labelLen",
                                  "scope": 2399,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": "uint256"
                                    },
                                    "id": 2376,
                                    "name": "ElementaryTypeName",
                                    "src": "1775:4:9"
                                  }
                                ],
                                "id": 2377,
                                "name": "VariableDeclaration",
                                "src": "1775:13:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint8",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "readUint8",
                                      "referencedDeclaration": 1764,
                                      "type": "function (bytes memory,uint256) pure returns (uint8)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2357,
                                          "type": "bytes memory",
                                          "value": "self"
                                        },
                                        "id": 2378,
                                        "name": "Identifier",
                                        "src": "1791:4:9"
                                      }
                                    ],
                                    "id": 2379,
                                    "name": "MemberAccess",
                                    "src": "1791:14:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2359,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2380,
                                    "name": "Identifier",
                                    "src": "1806:6:9"
                                  }
                                ],
                                "id": 2381,
                                "name": "FunctionCall",
                                "src": "1791:22:9"
                              }
                            ],
                            "id": 2382,
                            "name": "VariableDeclarationStatement",
                            "src": "1775:38:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2359,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2383,
                                    "name": "Identifier",
                                    "src": "1827:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2377,
                                          "type": "uint256",
                                          "value": "labelLen"
                                        },
                                        "id": 2384,
                                        "name": "Identifier",
                                        "src": "1837:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 2385,
                                        "name": "Literal",
                                        "src": "1848:1:9"
                                      }
                                    ],
                                    "id": 2386,
                                    "name": "BinaryOperation",
                                    "src": "1837:12:9"
                                  }
                                ],
                                "id": 2387,
                                "name": "Assignment",
                                "src": "1827:22:9"
                              }
                            ],
                            "id": 2388,
                            "name": "ExpressionStatement",
                            "src": "1827:22:9"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2377,
                                      "type": "uint256",
                                      "value": "labelLen"
                                    },
                                    "id": 2389,
                                    "name": "Identifier",
                                    "src": "1867:8:9"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2390,
                                    "name": "Literal",
                                    "src": "1879:1:9"
                                  }
                                ],
                                "id": 2391,
                                "name": "BinaryOperation",
                                "src": "1867:13:9"
                              },
                              {
                                "children": [
                                  {
                                    "id": 2392,
                                    "name": "Break",
                                    "src": "1900:5:9"
                                  }
                                ],
                                "id": 2393,
                                "name": "Block",
                                "src": "1882:38:9"
                              }
                            ],
                            "id": 2394,
                            "name": "IfStatement",
                            "src": "1863:57:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2365,
                                      "type": "uint256",
                                      "value": "count"
                                    },
                                    "id": 2395,
                                    "name": "Identifier",
                                    "src": "1933:5:9"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 2396,
                                    "name": "Literal",
                                    "src": "1942:1:9"
                                  }
                                ],
                                "id": 2397,
                                "name": "Assignment",
                                "src": "1933:10:9"
                              }
                            ],
                            "id": 2398,
                            "name": "ExpressionStatement",
                            "src": "1933:10:9"
                          }
                        ],
                        "id": 2399,
                        "name": "Block",
                        "src": "1719:235:9"
                      }
                    ],
                    "id": 2400,
                    "name": "WhileStatement",
                    "src": "1706:248:9"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2363
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2365,
                          "type": "uint256",
                          "value": "count"
                        },
                        "id": 2401,
                        "name": "Identifier",
                        "src": "1970:5:9"
                      }
                    ],
                    "id": 2402,
                    "name": "Return",
                    "src": "1963:12:9"
                  }
                ],
                "id": 2403,
                "name": "Block",
                "src": "1672:310:9"
              }
            ],
            "id": 2404,
            "name": "FunctionDefinition",
            "src": "1592:390:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_TYPE",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2405,
                "name": "ElementaryTypeName",
                "src": "1988:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "30",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 0",
                  "value": "0"
                },
                "id": 2406,
                "name": "Literal",
                "src": "2015:1:9"
              }
            ],
            "id": 2407,
            "name": "VariableDeclaration",
            "src": "1988:28:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_ALGORITHM",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2408,
                "name": "ElementaryTypeName",
                "src": "2022:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "32",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 2",
                  "value": "2"
                },
                "id": 2409,
                "name": "Literal",
                "src": "2054:1:9"
              }
            ],
            "id": 2410,
            "name": "VariableDeclaration",
            "src": "2022:33:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_LABELS",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2411,
                "name": "ElementaryTypeName",
                "src": "2061:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "33",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 3",
                  "value": "3"
                },
                "id": 2412,
                "name": "Literal",
                "src": "2090:1:9"
              }
            ],
            "id": 2413,
            "name": "VariableDeclaration",
            "src": "2061:30:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_TTL",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2414,
                "name": "ElementaryTypeName",
                "src": "2097:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "34",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 4",
                  "value": "4"
                },
                "id": 2415,
                "name": "Literal",
                "src": "2123:1:9"
              }
            ],
            "id": 2416,
            "name": "VariableDeclaration",
            "src": "2097:27:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_EXPIRATION",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2417,
                "name": "ElementaryTypeName",
                "src": "2130:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "38",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 8",
                  "value": "8"
                },
                "id": 2418,
                "name": "Literal",
                "src": "2163:1:9"
              }
            ],
            "id": 2419,
            "name": "VariableDeclaration",
            "src": "2130:34:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_INCEPTION",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2420,
                "name": "ElementaryTypeName",
                "src": "2170:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "3132",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 12",
                  "value": "12"
                },
                "id": 2421,
                "name": "Literal",
                "src": "2202:2:9"
              }
            ],
            "id": 2422,
            "name": "VariableDeclaration",
            "src": "2170:34:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_KEY_TAG",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2423,
                "name": "ElementaryTypeName",
                "src": "2210:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "3136",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 16",
                  "value": "16"
                },
                "id": 2424,
                "name": "Literal",
                "src": "2240:2:9"
              }
            ],
            "id": 2425,
            "name": "VariableDeclaration",
            "src": "2210:32:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "RRSIG_SIGNER_NAME",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2426,
                "name": "ElementaryTypeName",
                "src": "2248:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "3138",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 18",
                  "value": "18"
                },
                "id": 2427,
                "name": "Literal",
                "src": "2282:2:9"
              }
            ],
            "id": 2428,
            "name": "VariableDeclaration",
            "src": "2248:36:9"
          },
          {
            "attributes": {
              "canonicalName": "RRUtils.SignedSet",
              "name": "SignedSet",
              "scope": 3396,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "typeCovered",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2429,
                    "name": "ElementaryTypeName",
                    "src": "2318:6:9"
                  }
                ],
                "id": 2430,
                "name": "VariableDeclaration",
                "src": "2318:18:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "algorithm",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2431,
                    "name": "ElementaryTypeName",
                    "src": "2346:5:9"
                  }
                ],
                "id": 2432,
                "name": "VariableDeclaration",
                "src": "2346:15:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "labels",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2433,
                    "name": "ElementaryTypeName",
                    "src": "2371:5:9"
                  }
                ],
                "id": 2434,
                "name": "VariableDeclaration",
                "src": "2371:12:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "ttl",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint32",
                      "type": "uint32"
                    },
                    "id": 2435,
                    "name": "ElementaryTypeName",
                    "src": "2393:6:9"
                  }
                ],
                "id": 2436,
                "name": "VariableDeclaration",
                "src": "2393:10:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "expiration",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint32",
                      "type": "uint32"
                    },
                    "id": 2437,
                    "name": "ElementaryTypeName",
                    "src": "2413:6:9"
                  }
                ],
                "id": 2438,
                "name": "VariableDeclaration",
                "src": "2413:17:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "inception",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint32",
                      "type": "uint32"
                    },
                    "id": 2439,
                    "name": "ElementaryTypeName",
                    "src": "2440:6:9"
                  }
                ],
                "id": 2440,
                "name": "VariableDeclaration",
                "src": "2440:16:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "keytag",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2441,
                    "name": "ElementaryTypeName",
                    "src": "2466:6:9"
                  }
                ],
                "id": 2442,
                "name": "VariableDeclaration",
                "src": "2466:13:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "signerName",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2443,
                    "name": "ElementaryTypeName",
                    "src": "2489:5:9"
                  }
                ],
                "id": 2444,
                "name": "VariableDeclaration",
                "src": "2489:16:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "data",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2445,
                    "name": "ElementaryTypeName",
                    "src": "2515:5:9"
                  }
                ],
                "id": 2446,
                "name": "VariableDeclaration",
                "src": "2515:10:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "name",
                  "scope": 2449,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2447,
                    "name": "ElementaryTypeName",
                    "src": "2535:5:9"
                  }
                ],
                "id": 2448,
                "name": "VariableDeclaration",
                "src": "2535:10:9"
              }
            ],
            "id": 2449,
            "name": "StructDefinition",
            "src": "2291:261:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "readSignedSet",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2550,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2450,
                        "name": "ElementaryTypeName",
                        "src": "2581:5:9"
                      }
                    ],
                    "id": 2451,
                    "name": "VariableDeclaration",
                    "src": "2581:17:9"
                  }
                ],
                "id": 2452,
                "name": "ParameterList",
                "src": "2580:19:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2550,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.SignedSet",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "SignedSet",
                          "referencedDeclaration": 2449,
                          "type": "struct RRUtils.SignedSet"
                        },
                        "id": 2453,
                        "name": "UserDefinedTypeName",
                        "src": "2622:9:9"
                      }
                    ],
                    "id": 2454,
                    "name": "VariableDeclaration",
                    "src": "2622:21:9"
                  }
                ],
                "id": 2455,
                "name": "ParameterList",
                "src": "2621:23:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "typeCovered",
                              "referencedDeclaration": 2430,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2456,
                                "name": "Identifier",
                                "src": "2655:4:9"
                              }
                            ],
                            "id": 2458,
                            "name": "MemberAccess",
                            "src": "2655:16:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2459,
                                    "name": "Identifier",
                                    "src": "2674:4:9"
                                  }
                                ],
                                "id": 2460,
                                "name": "MemberAccess",
                                "src": "2674:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2407,
                                  "type": "uint256",
                                  "value": "RRSIG_TYPE"
                                },
                                "id": 2461,
                                "name": "Identifier",
                                "src": "2690:10:9"
                              }
                            ],
                            "id": 2462,
                            "name": "FunctionCall",
                            "src": "2674:27:9"
                          }
                        ],
                        "id": 2463,
                        "name": "Assignment",
                        "src": "2655:46:9"
                      }
                    ],
                    "id": 2464,
                    "name": "ExpressionStatement",
                    "src": "2655:46:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "algorithm",
                              "referencedDeclaration": 2432,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2465,
                                "name": "Identifier",
                                "src": "2711:4:9"
                              }
                            ],
                            "id": 2467,
                            "name": "MemberAccess",
                            "src": "2711:14:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2468,
                                    "name": "Identifier",
                                    "src": "2728:4:9"
                                  }
                                ],
                                "id": 2469,
                                "name": "MemberAccess",
                                "src": "2728:14:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2410,
                                  "type": "uint256",
                                  "value": "RRSIG_ALGORITHM"
                                },
                                "id": 2470,
                                "name": "Identifier",
                                "src": "2743:15:9"
                              }
                            ],
                            "id": 2471,
                            "name": "FunctionCall",
                            "src": "2728:31:9"
                          }
                        ],
                        "id": 2472,
                        "name": "Assignment",
                        "src": "2711:48:9"
                      }
                    ],
                    "id": 2473,
                    "name": "ExpressionStatement",
                    "src": "2711:48:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "labels",
                              "referencedDeclaration": 2434,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2474,
                                "name": "Identifier",
                                "src": "2769:4:9"
                              }
                            ],
                            "id": 2476,
                            "name": "MemberAccess",
                            "src": "2769:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2477,
                                    "name": "Identifier",
                                    "src": "2783:4:9"
                                  }
                                ],
                                "id": 2478,
                                "name": "MemberAccess",
                                "src": "2783:14:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2413,
                                  "type": "uint256",
                                  "value": "RRSIG_LABELS"
                                },
                                "id": 2479,
                                "name": "Identifier",
                                "src": "2798:12:9"
                              }
                            ],
                            "id": 2480,
                            "name": "FunctionCall",
                            "src": "2783:28:9"
                          }
                        ],
                        "id": 2481,
                        "name": "Assignment",
                        "src": "2769:42:9"
                      }
                    ],
                    "id": 2482,
                    "name": "ExpressionStatement",
                    "src": "2769:42:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "ttl",
                              "referencedDeclaration": 2436,
                              "type": "uint32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2483,
                                "name": "Identifier",
                                "src": "2821:4:9"
                              }
                            ],
                            "id": 2485,
                            "name": "MemberAccess",
                            "src": "2821:8:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint32",
                                  "referencedDeclaration": 1804,
                                  "type": "function (bytes memory,uint256) pure returns (uint32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2486,
                                    "name": "Identifier",
                                    "src": "2832:4:9"
                                  }
                                ],
                                "id": 2487,
                                "name": "MemberAccess",
                                "src": "2832:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2416,
                                  "type": "uint256",
                                  "value": "RRSIG_TTL"
                                },
                                "id": 2488,
                                "name": "Identifier",
                                "src": "2848:9:9"
                              }
                            ],
                            "id": 2489,
                            "name": "FunctionCall",
                            "src": "2832:26:9"
                          }
                        ],
                        "id": 2490,
                        "name": "Assignment",
                        "src": "2821:37:9"
                      }
                    ],
                    "id": 2491,
                    "name": "ExpressionStatement",
                    "src": "2821:37:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "expiration",
                              "referencedDeclaration": 2438,
                              "type": "uint32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2492,
                                "name": "Identifier",
                                "src": "2868:4:9"
                              }
                            ],
                            "id": 2494,
                            "name": "MemberAccess",
                            "src": "2868:15:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint32",
                                  "referencedDeclaration": 1804,
                                  "type": "function (bytes memory,uint256) pure returns (uint32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2495,
                                    "name": "Identifier",
                                    "src": "2886:4:9"
                                  }
                                ],
                                "id": 2496,
                                "name": "MemberAccess",
                                "src": "2886:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2419,
                                  "type": "uint256",
                                  "value": "RRSIG_EXPIRATION"
                                },
                                "id": 2497,
                                "name": "Identifier",
                                "src": "2902:16:9"
                              }
                            ],
                            "id": 2498,
                            "name": "FunctionCall",
                            "src": "2886:33:9"
                          }
                        ],
                        "id": 2499,
                        "name": "Assignment",
                        "src": "2868:51:9"
                      }
                    ],
                    "id": 2500,
                    "name": "ExpressionStatement",
                    "src": "2868:51:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "inception",
                              "referencedDeclaration": 2440,
                              "type": "uint32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2501,
                                "name": "Identifier",
                                "src": "2929:4:9"
                              }
                            ],
                            "id": 2503,
                            "name": "MemberAccess",
                            "src": "2929:14:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint32",
                                  "referencedDeclaration": 1804,
                                  "type": "function (bytes memory,uint256) pure returns (uint32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2504,
                                    "name": "Identifier",
                                    "src": "2946:4:9"
                                  }
                                ],
                                "id": 2505,
                                "name": "MemberAccess",
                                "src": "2946:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2422,
                                  "type": "uint256",
                                  "value": "RRSIG_INCEPTION"
                                },
                                "id": 2506,
                                "name": "Identifier",
                                "src": "2962:15:9"
                              }
                            ],
                            "id": 2507,
                            "name": "FunctionCall",
                            "src": "2946:32:9"
                          }
                        ],
                        "id": 2508,
                        "name": "Assignment",
                        "src": "2929:49:9"
                      }
                    ],
                    "id": 2509,
                    "name": "ExpressionStatement",
                    "src": "2929:49:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keytag",
                              "referencedDeclaration": 2442,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2510,
                                "name": "Identifier",
                                "src": "2988:4:9"
                              }
                            ],
                            "id": 2512,
                            "name": "MemberAccess",
                            "src": "2988:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2513,
                                    "name": "Identifier",
                                    "src": "3002:4:9"
                                  }
                                ],
                                "id": 2514,
                                "name": "MemberAccess",
                                "src": "3002:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2425,
                                  "type": "uint256",
                                  "value": "RRSIG_KEY_TAG"
                                },
                                "id": 2515,
                                "name": "Identifier",
                                "src": "3018:13:9"
                              }
                            ],
                            "id": 2516,
                            "name": "FunctionCall",
                            "src": "3002:30:9"
                          }
                        ],
                        "id": 2517,
                        "name": "Assignment",
                        "src": "2988:44:9"
                      }
                    ],
                    "id": 2518,
                    "name": "ExpressionStatement",
                    "src": "2988:44:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signerName",
                              "referencedDeclaration": 2444,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2519,
                                "name": "Identifier",
                                "src": "3042:4:9"
                              }
                            ],
                            "id": 2521,
                            "name": "MemberAccess",
                            "src": "3042:15:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2354,
                                  "type": "function (bytes memory,uint256) pure returns (bytes memory)",
                                  "value": "readName"
                                },
                                "id": 2522,
                                "name": "Identifier",
                                "src": "3060:8:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2451,
                                  "type": "bytes memory",
                                  "value": "data"
                                },
                                "id": 2523,
                                "name": "Identifier",
                                "src": "3069:4:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2428,
                                  "type": "uint256",
                                  "value": "RRSIG_SIGNER_NAME"
                                },
                                "id": 2524,
                                "name": "Identifier",
                                "src": "3075:17:9"
                              }
                            ],
                            "id": 2525,
                            "name": "FunctionCall",
                            "src": "3060:33:9"
                          }
                        ],
                        "id": 2526,
                        "name": "Assignment",
                        "src": "3042:51:9"
                      }
                    ],
                    "id": 2527,
                    "name": "ExpressionStatement",
                    "src": "3042:51:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "data",
                              "referencedDeclaration": 2446,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2454,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "self"
                                },
                                "id": 2528,
                                "name": "Identifier",
                                "src": "3103:4:9"
                              }
                            ],
                            "id": 2530,
                            "name": "MemberAccess",
                            "src": "3103:9:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "substring",
                                  "referencedDeclaration": 1955,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2451,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2531,
                                    "name": "Identifier",
                                    "src": "3115:4:9"
                                  }
                                ],
                                "id": 2532,
                                "name": "MemberAccess",
                                "src": "3115:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2428,
                                      "type": "uint256",
                                      "value": "RRSIG_SIGNER_NAME"
                                    },
                                    "id": 2533,
                                    "name": "Identifier",
                                    "src": "3130:17:9"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "signerName",
                                          "referencedDeclaration": 2444,
                                          "type": "bytes memory"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2454,
                                              "type": "struct RRUtils.SignedSet memory",
                                              "value": "self"
                                            },
                                            "id": 2534,
                                            "name": "Identifier",
                                            "src": "3150:4:9"
                                          }
                                        ],
                                        "id": 2535,
                                        "name": "MemberAccess",
                                        "src": "3150:15:9"
                                      }
                                    ],
                                    "id": 2536,
                                    "name": "MemberAccess",
                                    "src": "3150:22:9"
                                  }
                                ],
                                "id": 2537,
                                "name": "BinaryOperation",
                                "src": "3130:42:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2451,
                                              "type": "bytes memory",
                                              "value": "data"
                                            },
                                            "id": 2538,
                                            "name": "Identifier",
                                            "src": "3174:4:9"
                                          }
                                        ],
                                        "id": 2539,
                                        "name": "MemberAccess",
                                        "src": "3174:11:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2428,
                                          "type": "uint256",
                                          "value": "RRSIG_SIGNER_NAME"
                                        },
                                        "id": 2540,
                                        "name": "Identifier",
                                        "src": "3188:17:9"
                                      }
                                    ],
                                    "id": 2541,
                                    "name": "BinaryOperation",
                                    "src": "3174:31:9"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "signerName",
                                          "referencedDeclaration": 2444,
                                          "type": "bytes memory"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2454,
                                              "type": "struct RRUtils.SignedSet memory",
                                              "value": "self"
                                            },
                                            "id": 2542,
                                            "name": "Identifier",
                                            "src": "3208:4:9"
                                          }
                                        ],
                                        "id": 2543,
                                        "name": "MemberAccess",
                                        "src": "3208:15:9"
                                      }
                                    ],
                                    "id": 2544,
                                    "name": "MemberAccess",
                                    "src": "3208:22:9"
                                  }
                                ],
                                "id": 2545,
                                "name": "BinaryOperation",
                                "src": "3174:56:9"
                              }
                            ],
                            "id": 2546,
                            "name": "FunctionCall",
                            "src": "3115:116:9"
                          }
                        ],
                        "id": 2547,
                        "name": "Assignment",
                        "src": "3103:128:9"
                      }
                    ],
                    "id": 2548,
                    "name": "ExpressionStatement",
                    "src": "3103:128:9"
                  }
                ],
                "id": 2549,
                "name": "Block",
                "src": "2645:593:9"
              }
            ],
            "id": 2550,
            "name": "FunctionDefinition",
            "src": "2558:680:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "rrs",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "rrset",
                      "scope": 2564,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.SignedSet",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "SignedSet",
                          "referencedDeclaration": 2449,
                          "type": "struct RRUtils.SignedSet"
                        },
                        "id": 2551,
                        "name": "UserDefinedTypeName",
                        "src": "3257:9:9"
                      }
                    ],
                    "id": 2552,
                    "name": "VariableDeclaration",
                    "src": "3257:22:9"
                  }
                ],
                "id": 2553,
                "name": "ParameterList",
                "src": "3256:24:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2564,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.RRIterator",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "RRIterator",
                          "referencedDeclaration": 2579,
                          "type": "struct RRUtils.RRIterator"
                        },
                        "id": 2554,
                        "name": "UserDefinedTypeName",
                        "src": "3303:10:9"
                      }
                    ],
                    "id": 2555,
                    "name": "VariableDeclaration",
                    "src": "3303:17:9"
                  }
                ],
                "id": 2556,
                "name": "ParameterList",
                "src": "3302:19:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2556
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "struct RRUtils.RRIterator memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2606,
                              "type": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)",
                              "value": "iterateRRs"
                            },
                            "id": 2557,
                            "name": "Identifier",
                            "src": "3339:10:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "data",
                              "referencedDeclaration": 2446,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2552,
                                  "type": "struct RRUtils.SignedSet memory",
                                  "value": "rrset"
                                },
                                "id": 2558,
                                "name": "Identifier",
                                "src": "3350:5:9"
                              }
                            ],
                            "id": 2559,
                            "name": "MemberAccess",
                            "src": "3350:10:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2560,
                            "name": "Literal",
                            "src": "3362:1:9"
                          }
                        ],
                        "id": 2561,
                        "name": "FunctionCall",
                        "src": "3339:25:9"
                      }
                    ],
                    "id": 2562,
                    "name": "Return",
                    "src": "3332:32:9"
                  }
                ],
                "id": 2563,
                "name": "Block",
                "src": "3322:49:9"
              }
            ],
            "id": 2564,
            "name": "FunctionDefinition",
            "src": "3244:127:9"
          },
          {
            "attributes": {
              "canonicalName": "RRUtils.RRIterator",
              "name": "RRIterator",
              "scope": 3396,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "data",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2565,
                    "name": "ElementaryTypeName",
                    "src": "3466:5:9"
                  }
                ],
                "id": 2566,
                "name": "VariableDeclaration",
                "src": "3466:10:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "offset",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 2567,
                    "name": "ElementaryTypeName",
                    "src": "3486:4:9"
                  }
                ],
                "id": 2568,
                "name": "VariableDeclaration",
                "src": "3486:11:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "dnstype",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2569,
                    "name": "ElementaryTypeName",
                    "src": "3507:6:9"
                  }
                ],
                "id": 2570,
                "name": "VariableDeclaration",
                "src": "3507:14:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "class",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2571,
                    "name": "ElementaryTypeName",
                    "src": "3531:6:9"
                  }
                ],
                "id": 2572,
                "name": "VariableDeclaration",
                "src": "3531:12:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "ttl",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint32",
                      "type": "uint32"
                    },
                    "id": 2573,
                    "name": "ElementaryTypeName",
                    "src": "3553:6:9"
                  }
                ],
                "id": 2574,
                "name": "VariableDeclaration",
                "src": "3553:10:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "rdataOffset",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 2575,
                    "name": "ElementaryTypeName",
                    "src": "3573:4:9"
                  }
                ],
                "id": 2576,
                "name": "VariableDeclaration",
                "src": "3573:16:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "nextOffset",
                  "scope": 2579,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 2577,
                    "name": "ElementaryTypeName",
                    "src": "3599:4:9"
                  }
                ],
                "id": 2578,
                "name": "VariableDeclaration",
                "src": "3599:15:9"
              }
            ],
            "id": 2579,
            "name": "StructDefinition",
            "src": "3438:183:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "iterateRRs",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Begins iterating over resource records.\n @param self The byte string to read from.\n @param offset The offset to start reading at.\n @return ret An iterator object."
                },
                "id": 2580,
                "name": "StructuredDocumentation",
                "src": "3627:199:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2606,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2581,
                        "name": "ElementaryTypeName",
                        "src": "3851:5:9"
                      }
                    ],
                    "id": 2582,
                    "name": "VariableDeclaration",
                    "src": "3851:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 2606,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2583,
                        "name": "ElementaryTypeName",
                        "src": "3870:4:9"
                      }
                    ],
                    "id": 2584,
                    "name": "VariableDeclaration",
                    "src": "3870:11:9"
                  }
                ],
                "id": 2585,
                "name": "ParameterList",
                "src": "3850:32:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ret",
                      "scope": 2606,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.RRIterator",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "RRIterator",
                          "referencedDeclaration": 2579,
                          "type": "struct RRUtils.RRIterator"
                        },
                        "id": 2586,
                        "name": "UserDefinedTypeName",
                        "src": "3906:10:9"
                      }
                    ],
                    "id": 2587,
                    "name": "VariableDeclaration",
                    "src": "3906:21:9"
                  }
                ],
                "id": 2588,
                "name": "ParameterList",
                "src": "3905:23:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "data",
                              "referencedDeclaration": 2566,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2587,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "ret"
                                },
                                "id": 2589,
                                "name": "Identifier",
                                "src": "3939:3:9"
                              }
                            ],
                            "id": 2591,
                            "name": "MemberAccess",
                            "src": "3939:8:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2582,
                              "type": "bytes memory",
                              "value": "self"
                            },
                            "id": 2592,
                            "name": "Identifier",
                            "src": "3950:4:9"
                          }
                        ],
                        "id": 2593,
                        "name": "Assignment",
                        "src": "3939:15:9"
                      }
                    ],
                    "id": 2594,
                    "name": "ExpressionStatement",
                    "src": "3939:15:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "nextOffset",
                              "referencedDeclaration": 2578,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2587,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "ret"
                                },
                                "id": 2595,
                                "name": "Identifier",
                                "src": "3964:3:9"
                              }
                            ],
                            "id": 2597,
                            "name": "MemberAccess",
                            "src": "3964:14:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2584,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 2598,
                            "name": "Identifier",
                            "src": "3981:6:9"
                          }
                        ],
                        "id": 2599,
                        "name": "Assignment",
                        "src": "3964:23:9"
                      }
                    ],
                    "id": 2600,
                    "name": "ExpressionStatement",
                    "src": "3964:23:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_RRIterator_$2579_memory_ptr",
                                  "typeString": "struct RRUtils.RRIterator memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2725,
                              "type": "function (struct RRUtils.RRIterator memory) pure",
                              "value": "next"
                            },
                            "id": 2601,
                            "name": "Identifier",
                            "src": "3997:4:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2587,
                              "type": "struct RRUtils.RRIterator memory",
                              "value": "ret"
                            },
                            "id": 2602,
                            "name": "Identifier",
                            "src": "4002:3:9"
                          }
                        ],
                        "id": 2603,
                        "name": "FunctionCall",
                        "src": "3997:9:9"
                      }
                    ],
                    "id": 2604,
                    "name": "ExpressionStatement",
                    "src": "3997:9:9"
                  }
                ],
                "id": 2605,
                "name": "Block",
                "src": "3929:84:9"
              }
            ],
            "id": 2606,
            "name": "FunctionDefinition",
            "src": "3831:182:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "done",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true iff there are more RRs to iterate.\n @param iter The iterator to check.\n @return True iff the iterator has finished."
                },
                "id": 2607,
                "name": "StructuredDocumentation",
                "src": "4019:160:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "iter",
                      "scope": 2622,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.RRIterator",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "RRIterator",
                          "referencedDeclaration": 2579,
                          "type": "struct RRUtils.RRIterator"
                        },
                        "id": 2608,
                        "name": "UserDefinedTypeName",
                        "src": "4198:10:9"
                      }
                    ],
                    "id": 2609,
                    "name": "VariableDeclaration",
                    "src": "4198:22:9"
                  }
                ],
                "id": 2610,
                "name": "ParameterList",
                "src": "4197:24:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2622,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2611,
                        "name": "ElementaryTypeName",
                        "src": "4244:4:9"
                      }
                    ],
                    "id": 2612,
                    "name": "VariableDeclaration",
                    "src": "4244:4:9"
                  }
                ],
                "id": 2613,
                "name": "ParameterList",
                "src": "4243:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2613
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "offset",
                              "referencedDeclaration": 2568,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2609,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2614,
                                "name": "Identifier",
                                "src": "4267:4:9"
                              }
                            ],
                            "id": 2615,
                            "name": "MemberAccess",
                            "src": "4267:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2609,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2616,
                                    "name": "Identifier",
                                    "src": "4282:4:9"
                                  }
                                ],
                                "id": 2617,
                                "name": "MemberAccess",
                                "src": "4282:9:9"
                              }
                            ],
                            "id": 2618,
                            "name": "MemberAccess",
                            "src": "4282:16:9"
                          }
                        ],
                        "id": 2619,
                        "name": "BinaryOperation",
                        "src": "4267:31:9"
                      }
                    ],
                    "id": 2620,
                    "name": "Return",
                    "src": "4260:38:9"
                  }
                ],
                "id": 2621,
                "name": "Block",
                "src": "4250:55:9"
              }
            ],
            "id": 2622,
            "name": "FunctionDefinition",
            "src": "4184:121:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "next",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Moves the iterator to the next resource record.\n @param iter The iterator to advance."
                },
                "id": 2623,
                "name": "StructuredDocumentation",
                "src": "4311:112:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "iter",
                      "scope": 2725,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.RRIterator",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "RRIterator",
                          "referencedDeclaration": 2579,
                          "type": "struct RRUtils.RRIterator"
                        },
                        "id": 2624,
                        "name": "UserDefinedTypeName",
                        "src": "4442:10:9"
                      }
                    ],
                    "id": 2625,
                    "name": "VariableDeclaration",
                    "src": "4442:22:9"
                  }
                ],
                "id": 2626,
                "name": "ParameterList",
                "src": "4441:24:9"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2627,
                "name": "ParameterList",
                "src": "4480:0:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "offset",
                              "referencedDeclaration": 2568,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2628,
                                "name": "Identifier",
                                "src": "4490:4:9"
                              }
                            ],
                            "id": 2630,
                            "name": "MemberAccess",
                            "src": "4490:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "nextOffset",
                              "referencedDeclaration": 2578,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2631,
                                "name": "Identifier",
                                "src": "4504:4:9"
                              }
                            ],
                            "id": 2632,
                            "name": "MemberAccess",
                            "src": "4504:15:9"
                          }
                        ],
                        "id": 2633,
                        "name": "Assignment",
                        "src": "4490:29:9"
                      }
                    ],
                    "id": 2634,
                    "name": "ExpressionStatement",
                    "src": "4490:29:9"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "offset",
                              "referencedDeclaration": 2568,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2635,
                                "name": "Identifier",
                                "src": "4533:4:9"
                              }
                            ],
                            "id": 2636,
                            "name": "MemberAccess",
                            "src": "4533:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2625,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2637,
                                    "name": "Identifier",
                                    "src": "4548:4:9"
                                  }
                                ],
                                "id": 2638,
                                "name": "MemberAccess",
                                "src": "4548:9:9"
                              }
                            ],
                            "id": 2639,
                            "name": "MemberAccess",
                            "src": "4548:16:9"
                          }
                        ],
                        "id": 2640,
                        "name": "BinaryOperation",
                        "src": "4533:31:9"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2627
                            },
                            "id": 2641,
                            "name": "Return",
                            "src": "4580:7:9"
                          }
                        ],
                        "id": 2642,
                        "name": "Block",
                        "src": "4566:31:9"
                      }
                    ],
                    "id": 2643,
                    "name": "IfStatement",
                    "src": "4529:68:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2645
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "off",
                          "scope": 2724,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2644,
                            "name": "ElementaryTypeName",
                            "src": "4632:4:9"
                          }
                        ],
                        "id": 2645,
                        "name": "VariableDeclaration",
                        "src": "4632:8:9"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "offset",
                              "referencedDeclaration": 2568,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2646,
                                "name": "Identifier",
                                "src": "4643:4:9"
                              }
                            ],
                            "id": 2647,
                            "name": "MemberAccess",
                            "src": "4643:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2330,
                                  "type": "function (bytes memory,uint256) pure returns (uint256)",
                                  "value": "nameLength"
                                },
                                "id": 2648,
                                "name": "Identifier",
                                "src": "4657:10:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2625,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2649,
                                    "name": "Identifier",
                                    "src": "4668:4:9"
                                  }
                                ],
                                "id": 2650,
                                "name": "MemberAccess",
                                "src": "4668:9:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "offset",
                                  "referencedDeclaration": 2568,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2625,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2651,
                                    "name": "Identifier",
                                    "src": "4679:4:9"
                                  }
                                ],
                                "id": 2652,
                                "name": "MemberAccess",
                                "src": "4679:11:9"
                              }
                            ],
                            "id": 2653,
                            "name": "FunctionCall",
                            "src": "4657:34:9"
                          }
                        ],
                        "id": 2654,
                        "name": "BinaryOperation",
                        "src": "4643:48:9"
                      }
                    ],
                    "id": 2655,
                    "name": "VariableDeclarationStatement",
                    "src": "4632:59:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "dnstype",
                              "referencedDeclaration": 2570,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2656,
                                "name": "Identifier",
                                "src": "4739:4:9"
                              }
                            ],
                            "id": 2658,
                            "name": "MemberAccess",
                            "src": "4739:12:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "data",
                                      "referencedDeclaration": 2566,
                                      "type": "bytes memory"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2625,
                                          "type": "struct RRUtils.RRIterator memory",
                                          "value": "iter"
                                        },
                                        "id": 2659,
                                        "name": "Identifier",
                                        "src": "4754:4:9"
                                      }
                                    ],
                                    "id": 2660,
                                    "name": "MemberAccess",
                                    "src": "4754:9:9"
                                  }
                                ],
                                "id": 2661,
                                "name": "MemberAccess",
                                "src": "4754:20:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2645,
                                  "type": "uint256",
                                  "value": "off"
                                },
                                "id": 2662,
                                "name": "Identifier",
                                "src": "4775:3:9"
                              }
                            ],
                            "id": 2663,
                            "name": "FunctionCall",
                            "src": "4754:25:9"
                          }
                        ],
                        "id": 2664,
                        "name": "Assignment",
                        "src": "4739:40:9"
                      }
                    ],
                    "id": 2665,
                    "name": "ExpressionStatement",
                    "src": "4739:40:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2645,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 2666,
                            "name": "Identifier",
                            "src": "4789:3:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "32",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 2",
                              "value": "2"
                            },
                            "id": 2667,
                            "name": "Literal",
                            "src": "4796:1:9"
                          }
                        ],
                        "id": 2668,
                        "name": "Assignment",
                        "src": "4789:8:9"
                      }
                    ],
                    "id": 2669,
                    "name": "ExpressionStatement",
                    "src": "4789:8:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "class",
                              "referencedDeclaration": 2572,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2670,
                                "name": "Identifier",
                                "src": "4807:4:9"
                              }
                            ],
                            "id": 2672,
                            "name": "MemberAccess",
                            "src": "4807:10:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "data",
                                      "referencedDeclaration": 2566,
                                      "type": "bytes memory"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2625,
                                          "type": "struct RRUtils.RRIterator memory",
                                          "value": "iter"
                                        },
                                        "id": 2673,
                                        "name": "Identifier",
                                        "src": "4820:4:9"
                                      }
                                    ],
                                    "id": 2674,
                                    "name": "MemberAccess",
                                    "src": "4820:9:9"
                                  }
                                ],
                                "id": 2675,
                                "name": "MemberAccess",
                                "src": "4820:20:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2645,
                                  "type": "uint256",
                                  "value": "off"
                                },
                                "id": 2676,
                                "name": "Identifier",
                                "src": "4841:3:9"
                              }
                            ],
                            "id": 2677,
                            "name": "FunctionCall",
                            "src": "4820:25:9"
                          }
                        ],
                        "id": 2678,
                        "name": "Assignment",
                        "src": "4807:38:9"
                      }
                    ],
                    "id": 2679,
                    "name": "ExpressionStatement",
                    "src": "4807:38:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2645,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 2680,
                            "name": "Identifier",
                            "src": "4855:3:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "32",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 2",
                              "value": "2"
                            },
                            "id": 2681,
                            "name": "Literal",
                            "src": "4862:1:9"
                          }
                        ],
                        "id": 2682,
                        "name": "Assignment",
                        "src": "4855:8:9"
                      }
                    ],
                    "id": 2683,
                    "name": "ExpressionStatement",
                    "src": "4855:8:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "ttl",
                              "referencedDeclaration": 2574,
                              "type": "uint32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2684,
                                "name": "Identifier",
                                "src": "4873:4:9"
                              }
                            ],
                            "id": 2686,
                            "name": "MemberAccess",
                            "src": "4873:8:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint32",
                                  "referencedDeclaration": 1804,
                                  "type": "function (bytes memory,uint256) pure returns (uint32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "data",
                                      "referencedDeclaration": 2566,
                                      "type": "bytes memory"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2625,
                                          "type": "struct RRUtils.RRIterator memory",
                                          "value": "iter"
                                        },
                                        "id": 2687,
                                        "name": "Identifier",
                                        "src": "4884:4:9"
                                      }
                                    ],
                                    "id": 2688,
                                    "name": "MemberAccess",
                                    "src": "4884:9:9"
                                  }
                                ],
                                "id": 2689,
                                "name": "MemberAccess",
                                "src": "4884:20:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2645,
                                  "type": "uint256",
                                  "value": "off"
                                },
                                "id": 2690,
                                "name": "Identifier",
                                "src": "4905:3:9"
                              }
                            ],
                            "id": 2691,
                            "name": "FunctionCall",
                            "src": "4884:25:9"
                          }
                        ],
                        "id": 2692,
                        "name": "Assignment",
                        "src": "4873:36:9"
                      }
                    ],
                    "id": 2693,
                    "name": "ExpressionStatement",
                    "src": "4873:36:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2645,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 2694,
                            "name": "Identifier",
                            "src": "4919:3:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 2695,
                            "name": "Literal",
                            "src": "4926:1:9"
                          }
                        ],
                        "id": 2696,
                        "name": "Assignment",
                        "src": "4919:8:9"
                      }
                    ],
                    "id": 2697,
                    "name": "ExpressionStatement",
                    "src": "4919:8:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2699
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "rdataLength",
                          "scope": 2724,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2698,
                            "name": "ElementaryTypeName",
                            "src": "4964:4:9"
                          }
                        ],
                        "id": 2699,
                        "name": "VariableDeclaration",
                        "src": "4964:16:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint16",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "readUint16",
                              "referencedDeclaration": 1784,
                              "type": "function (bytes memory,uint256) pure returns (uint16)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2625,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2700,
                                    "name": "Identifier",
                                    "src": "4983:4:9"
                                  }
                                ],
                                "id": 2701,
                                "name": "MemberAccess",
                                "src": "4983:9:9"
                              }
                            ],
                            "id": 2702,
                            "name": "MemberAccess",
                            "src": "4983:20:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2645,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 2703,
                            "name": "Identifier",
                            "src": "5004:3:9"
                          }
                        ],
                        "id": 2704,
                        "name": "FunctionCall",
                        "src": "4983:25:9"
                      }
                    ],
                    "id": 2705,
                    "name": "VariableDeclarationStatement",
                    "src": "4964:44:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2645,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 2706,
                            "name": "Identifier",
                            "src": "5018:3:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "32",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 2",
                              "value": "2"
                            },
                            "id": 2707,
                            "name": "Literal",
                            "src": "5025:1:9"
                          }
                        ],
                        "id": 2708,
                        "name": "Assignment",
                        "src": "5018:8:9"
                      }
                    ],
                    "id": 2709,
                    "name": "ExpressionStatement",
                    "src": "5018:8:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "rdataOffset",
                              "referencedDeclaration": 2576,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2710,
                                "name": "Identifier",
                                "src": "5036:4:9"
                              }
                            ],
                            "id": 2712,
                            "name": "MemberAccess",
                            "src": "5036:16:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2645,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 2713,
                            "name": "Identifier",
                            "src": "5055:3:9"
                          }
                        ],
                        "id": 2714,
                        "name": "Assignment",
                        "src": "5036:22:9"
                      }
                    ],
                    "id": 2715,
                    "name": "ExpressionStatement",
                    "src": "5036:22:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "nextOffset",
                              "referencedDeclaration": 2578,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2625,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2716,
                                "name": "Identifier",
                                "src": "5068:4:9"
                              }
                            ],
                            "id": 2718,
                            "name": "MemberAccess",
                            "src": "5068:15:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2645,
                                  "type": "uint256",
                                  "value": "off"
                                },
                                "id": 2719,
                                "name": "Identifier",
                                "src": "5086:3:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2699,
                                  "type": "uint256",
                                  "value": "rdataLength"
                                },
                                "id": 2720,
                                "name": "Identifier",
                                "src": "5092:11:9"
                              }
                            ],
                            "id": 2721,
                            "name": "BinaryOperation",
                            "src": "5086:17:9"
                          }
                        ],
                        "id": 2722,
                        "name": "Assignment",
                        "src": "5068:35:9"
                      }
                    ],
                    "id": 2723,
                    "name": "ExpressionStatement",
                    "src": "5068:35:9"
                  }
                ],
                "id": 2724,
                "name": "Block",
                "src": "4480:630:9"
              }
            ],
            "id": 2725,
            "name": "FunctionDefinition",
            "src": "4428:682:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "name",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the name of the current record.\n @param iter The iterator.\n @return A new bytes object containing the owner name from the RR."
                },
                "id": 2726,
                "name": "StructuredDocumentation",
                "src": "5116:165:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "iter",
                      "scope": 2747,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.RRIterator",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "RRIterator",
                          "referencedDeclaration": 2579,
                          "type": "struct RRUtils.RRIterator"
                        },
                        "id": 2727,
                        "name": "UserDefinedTypeName",
                        "src": "5300:10:9"
                      }
                    ],
                    "id": 2728,
                    "name": "VariableDeclaration",
                    "src": "5300:22:9"
                  }
                ],
                "id": 2729,
                "name": "ParameterList",
                "src": "5299:24:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2747,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2730,
                        "name": "ElementaryTypeName",
                        "src": "5346:5:9"
                      }
                    ],
                    "id": 2731,
                    "name": "VariableDeclaration",
                    "src": "5346:12:9"
                  }
                ],
                "id": 2732,
                "name": "ParameterList",
                "src": "5345:14:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2732
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "substring",
                              "referencedDeclaration": 1955,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2728,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2733,
                                    "name": "Identifier",
                                    "src": "5377:4:9"
                                  }
                                ],
                                "id": 2734,
                                "name": "MemberAccess",
                                "src": "5377:9:9"
                              }
                            ],
                            "id": 2735,
                            "name": "MemberAccess",
                            "src": "5377:19:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "offset",
                              "referencedDeclaration": 2568,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2728,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2736,
                                "name": "Identifier",
                                "src": "5397:4:9"
                              }
                            ],
                            "id": 2737,
                            "name": "MemberAccess",
                            "src": "5397:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2330,
                                  "type": "function (bytes memory,uint256) pure returns (uint256)",
                                  "value": "nameLength"
                                },
                                "id": 2738,
                                "name": "Identifier",
                                "src": "5410:10:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2728,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2739,
                                    "name": "Identifier",
                                    "src": "5421:4:9"
                                  }
                                ],
                                "id": 2740,
                                "name": "MemberAccess",
                                "src": "5421:9:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "offset",
                                  "referencedDeclaration": 2568,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2728,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2741,
                                    "name": "Identifier",
                                    "src": "5432:4:9"
                                  }
                                ],
                                "id": 2742,
                                "name": "MemberAccess",
                                "src": "5432:11:9"
                              }
                            ],
                            "id": 2743,
                            "name": "FunctionCall",
                            "src": "5410:34:9"
                          }
                        ],
                        "id": 2744,
                        "name": "FunctionCall",
                        "src": "5377:68:9"
                      }
                    ],
                    "id": 2745,
                    "name": "Return",
                    "src": "5370:75:9"
                  }
                ],
                "id": 2746,
                "name": "Block",
                "src": "5360:92:9"
              }
            ],
            "id": 2747,
            "name": "FunctionDefinition",
            "src": "5286:166:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "rdata",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the rdata portion of the current record.\n @param iter The iterator.\n @return A new bytes object containing the RR's RDATA."
                },
                "id": 2748,
                "name": "StructuredDocumentation",
                "src": "5458:162:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "iter",
                      "scope": 2768,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.RRIterator",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "RRIterator",
                          "referencedDeclaration": 2579,
                          "type": "struct RRUtils.RRIterator"
                        },
                        "id": 2749,
                        "name": "UserDefinedTypeName",
                        "src": "5640:10:9"
                      }
                    ],
                    "id": 2750,
                    "name": "VariableDeclaration",
                    "src": "5640:22:9"
                  }
                ],
                "id": 2751,
                "name": "ParameterList",
                "src": "5639:24:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2768,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2752,
                        "name": "ElementaryTypeName",
                        "src": "5686:5:9"
                      }
                    ],
                    "id": 2753,
                    "name": "VariableDeclaration",
                    "src": "5686:12:9"
                  }
                ],
                "id": 2754,
                "name": "ParameterList",
                "src": "5685:14:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2754
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "substring",
                              "referencedDeclaration": 1955,
                              "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "data",
                                  "referencedDeclaration": 2566,
                                  "type": "bytes memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2750,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2755,
                                    "name": "Identifier",
                                    "src": "5717:4:9"
                                  }
                                ],
                                "id": 2756,
                                "name": "MemberAccess",
                                "src": "5717:9:9"
                              }
                            ],
                            "id": 2757,
                            "name": "MemberAccess",
                            "src": "5717:19:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "rdataOffset",
                              "referencedDeclaration": 2576,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2750,
                                  "type": "struct RRUtils.RRIterator memory",
                                  "value": "iter"
                                },
                                "id": 2758,
                                "name": "Identifier",
                                "src": "5737:4:9"
                              }
                            ],
                            "id": 2759,
                            "name": "MemberAccess",
                            "src": "5737:16:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "nextOffset",
                                  "referencedDeclaration": 2578,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2750,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2760,
                                    "name": "Identifier",
                                    "src": "5755:4:9"
                                  }
                                ],
                                "id": 2761,
                                "name": "MemberAccess",
                                "src": "5755:15:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "rdataOffset",
                                  "referencedDeclaration": 2576,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2750,
                                      "type": "struct RRUtils.RRIterator memory",
                                      "value": "iter"
                                    },
                                    "id": 2762,
                                    "name": "Identifier",
                                    "src": "5773:4:9"
                                  }
                                ],
                                "id": 2763,
                                "name": "MemberAccess",
                                "src": "5773:16:9"
                              }
                            ],
                            "id": 2764,
                            "name": "BinaryOperation",
                            "src": "5755:34:9"
                          }
                        ],
                        "id": 2765,
                        "name": "FunctionCall",
                        "src": "5717:73:9"
                      }
                    ],
                    "id": 2766,
                    "name": "Return",
                    "src": "5710:80:9"
                  }
                ],
                "id": 2767,
                "name": "Block",
                "src": "5700:97:9"
              }
            ],
            "id": 2768,
            "name": "FunctionDefinition",
            "src": "5625:172:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DNSKEY_FLAGS",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2769,
                "name": "ElementaryTypeName",
                "src": "5803:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "30",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 0",
                  "value": "0"
                },
                "id": 2770,
                "name": "Literal",
                "src": "5832:1:9"
              }
            ],
            "id": 2771,
            "name": "VariableDeclaration",
            "src": "5803:30:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DNSKEY_PROTOCOL",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2772,
                "name": "ElementaryTypeName",
                "src": "5839:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "32",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 2",
                  "value": "2"
                },
                "id": 2773,
                "name": "Literal",
                "src": "5871:1:9"
              }
            ],
            "id": 2774,
            "name": "VariableDeclaration",
            "src": "5839:33:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DNSKEY_ALGORITHM",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2775,
                "name": "ElementaryTypeName",
                "src": "5878:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "33",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 3",
                  "value": "3"
                },
                "id": 2776,
                "name": "Literal",
                "src": "5911:1:9"
              }
            ],
            "id": 2777,
            "name": "VariableDeclaration",
            "src": "5878:34:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DNSKEY_PUBKEY",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2778,
                "name": "ElementaryTypeName",
                "src": "5918:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "34",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 4",
                  "value": "4"
                },
                "id": 2779,
                "name": "Literal",
                "src": "5948:1:9"
              }
            ],
            "id": 2780,
            "name": "VariableDeclaration",
            "src": "5918:31:9"
          },
          {
            "attributes": {
              "canonicalName": "RRUtils.DNSKEY",
              "name": "DNSKEY",
              "scope": 3396,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "flags",
                  "scope": 2789,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2781,
                    "name": "ElementaryTypeName",
                    "src": "5980:6:9"
                  }
                ],
                "id": 2782,
                "name": "VariableDeclaration",
                "src": "5980:12:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "protocol",
                  "scope": 2789,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2783,
                    "name": "ElementaryTypeName",
                    "src": "6002:5:9"
                  }
                ],
                "id": 2784,
                "name": "VariableDeclaration",
                "src": "6002:14:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "algorithm",
                  "scope": 2789,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2785,
                    "name": "ElementaryTypeName",
                    "src": "6026:5:9"
                  }
                ],
                "id": 2786,
                "name": "VariableDeclaration",
                "src": "6026:15:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "publicKey",
                  "scope": 2789,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2787,
                    "name": "ElementaryTypeName",
                    "src": "6051:5:9"
                  }
                ],
                "id": 2788,
                "name": "VariableDeclaration",
                "src": "6051:15:9"
              }
            ],
            "id": 2789,
            "name": "StructDefinition",
            "src": "5956:117:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "readDNSKEY",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2848,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2790,
                        "name": "ElementaryTypeName",
                        "src": "6099:5:9"
                      }
                    ],
                    "id": 2791,
                    "name": "VariableDeclaration",
                    "src": "6099:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 2848,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2792,
                        "name": "ElementaryTypeName",
                        "src": "6118:4:9"
                      }
                    ],
                    "id": 2793,
                    "name": "VariableDeclaration",
                    "src": "6118:11:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "length",
                      "scope": 2848,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2794,
                        "name": "ElementaryTypeName",
                        "src": "6131:4:9"
                      }
                    ],
                    "id": 2795,
                    "name": "VariableDeclaration",
                    "src": "6131:11:9"
                  }
                ],
                "id": 2796,
                "name": "ParameterList",
                "src": "6098:45:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2848,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.DNSKEY",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "DNSKEY",
                          "referencedDeclaration": 2789,
                          "type": "struct RRUtils.DNSKEY"
                        },
                        "id": 2797,
                        "name": "UserDefinedTypeName",
                        "src": "6166:6:9"
                      }
                    ],
                    "id": 2798,
                    "name": "VariableDeclaration",
                    "src": "6166:18:9"
                  }
                ],
                "id": 2799,
                "name": "ParameterList",
                "src": "6165:20:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "flags",
                              "referencedDeclaration": 2782,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2798,
                                  "type": "struct RRUtils.DNSKEY memory",
                                  "value": "self"
                                },
                                "id": 2800,
                                "name": "Identifier",
                                "src": "6196:4:9"
                              }
                            ],
                            "id": 2802,
                            "name": "MemberAccess",
                            "src": "6196:10:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2791,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2803,
                                    "name": "Identifier",
                                    "src": "6209:4:9"
                                  }
                                ],
                                "id": 2804,
                                "name": "MemberAccess",
                                "src": "6209:15:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2793,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2805,
                                    "name": "Identifier",
                                    "src": "6225:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2771,
                                      "type": "uint256",
                                      "value": "DNSKEY_FLAGS"
                                    },
                                    "id": 2806,
                                    "name": "Identifier",
                                    "src": "6234:12:9"
                                  }
                                ],
                                "id": 2807,
                                "name": "BinaryOperation",
                                "src": "6225:21:9"
                              }
                            ],
                            "id": 2808,
                            "name": "FunctionCall",
                            "src": "6209:38:9"
                          }
                        ],
                        "id": 2809,
                        "name": "Assignment",
                        "src": "6196:51:9"
                      }
                    ],
                    "id": 2810,
                    "name": "ExpressionStatement",
                    "src": "6196:51:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "protocol",
                              "referencedDeclaration": 2784,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2798,
                                  "type": "struct RRUtils.DNSKEY memory",
                                  "value": "self"
                                },
                                "id": 2811,
                                "name": "Identifier",
                                "src": "6257:4:9"
                              }
                            ],
                            "id": 2813,
                            "name": "MemberAccess",
                            "src": "6257:13:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2791,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2814,
                                    "name": "Identifier",
                                    "src": "6273:4:9"
                                  }
                                ],
                                "id": 2815,
                                "name": "MemberAccess",
                                "src": "6273:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2793,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2816,
                                    "name": "Identifier",
                                    "src": "6288:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2774,
                                      "type": "uint256",
                                      "value": "DNSKEY_PROTOCOL"
                                    },
                                    "id": 2817,
                                    "name": "Identifier",
                                    "src": "6297:15:9"
                                  }
                                ],
                                "id": 2818,
                                "name": "BinaryOperation",
                                "src": "6288:24:9"
                              }
                            ],
                            "id": 2819,
                            "name": "FunctionCall",
                            "src": "6273:40:9"
                          }
                        ],
                        "id": 2820,
                        "name": "Assignment",
                        "src": "6257:56:9"
                      }
                    ],
                    "id": 2821,
                    "name": "ExpressionStatement",
                    "src": "6257:56:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "algorithm",
                              "referencedDeclaration": 2786,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2798,
                                  "type": "struct RRUtils.DNSKEY memory",
                                  "value": "self"
                                },
                                "id": 2822,
                                "name": "Identifier",
                                "src": "6323:4:9"
                              }
                            ],
                            "id": 2824,
                            "name": "MemberAccess",
                            "src": "6323:14:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2791,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2825,
                                    "name": "Identifier",
                                    "src": "6340:4:9"
                                  }
                                ],
                                "id": 2826,
                                "name": "MemberAccess",
                                "src": "6340:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2793,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2827,
                                    "name": "Identifier",
                                    "src": "6355:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2777,
                                      "type": "uint256",
                                      "value": "DNSKEY_ALGORITHM"
                                    },
                                    "id": 2828,
                                    "name": "Identifier",
                                    "src": "6364:16:9"
                                  }
                                ],
                                "id": 2829,
                                "name": "BinaryOperation",
                                "src": "6355:25:9"
                              }
                            ],
                            "id": 2830,
                            "name": "FunctionCall",
                            "src": "6340:41:9"
                          }
                        ],
                        "id": 2831,
                        "name": "Assignment",
                        "src": "6323:58:9"
                      }
                    ],
                    "id": 2832,
                    "name": "ExpressionStatement",
                    "src": "6323:58:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "publicKey",
                              "referencedDeclaration": 2788,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2798,
                                  "type": "struct RRUtils.DNSKEY memory",
                                  "value": "self"
                                },
                                "id": 2833,
                                "name": "Identifier",
                                "src": "6391:4:9"
                              }
                            ],
                            "id": 2835,
                            "name": "MemberAccess",
                            "src": "6391:14:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "substring",
                                  "referencedDeclaration": 1955,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2791,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2836,
                                    "name": "Identifier",
                                    "src": "6408:4:9"
                                  }
                                ],
                                "id": 2837,
                                "name": "MemberAccess",
                                "src": "6408:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2793,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2838,
                                    "name": "Identifier",
                                    "src": "6423:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2780,
                                      "type": "uint256",
                                      "value": "DNSKEY_PUBKEY"
                                    },
                                    "id": 2839,
                                    "name": "Identifier",
                                    "src": "6432:13:9"
                                  }
                                ],
                                "id": 2840,
                                "name": "BinaryOperation",
                                "src": "6423:22:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2795,
                                      "type": "uint256",
                                      "value": "length"
                                    },
                                    "id": 2841,
                                    "name": "Identifier",
                                    "src": "6447:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2780,
                                      "type": "uint256",
                                      "value": "DNSKEY_PUBKEY"
                                    },
                                    "id": 2842,
                                    "name": "Identifier",
                                    "src": "6456:13:9"
                                  }
                                ],
                                "id": 2843,
                                "name": "BinaryOperation",
                                "src": "6447:22:9"
                              }
                            ],
                            "id": 2844,
                            "name": "FunctionCall",
                            "src": "6408:62:9"
                          }
                        ],
                        "id": 2845,
                        "name": "Assignment",
                        "src": "6391:79:9"
                      }
                    ],
                    "id": 2846,
                    "name": "ExpressionStatement",
                    "src": "6391:79:9"
                  }
                ],
                "id": 2847,
                "name": "Block",
                "src": "6186:291:9"
              }
            ],
            "id": 2848,
            "name": "FunctionDefinition",
            "src": "6079:398:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DS_KEY_TAG",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2849,
                "name": "ElementaryTypeName",
                "src": "6484:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "30",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 0",
                  "value": "0"
                },
                "id": 2850,
                "name": "Literal",
                "src": "6511:1:9"
              }
            ],
            "id": 2851,
            "name": "VariableDeclaration",
            "src": "6484:28:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DS_ALGORITHM",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2852,
                "name": "ElementaryTypeName",
                "src": "6518:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "32",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 2",
                  "value": "2"
                },
                "id": 2853,
                "name": "Literal",
                "src": "6547:1:9"
              }
            ],
            "id": 2854,
            "name": "VariableDeclaration",
            "src": "6518:30:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DS_DIGEST_TYPE",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2855,
                "name": "ElementaryTypeName",
                "src": "6554:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "33",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 3",
                  "value": "3"
                },
                "id": 2856,
                "name": "Literal",
                "src": "6585:1:9"
              }
            ],
            "id": 2857,
            "name": "VariableDeclaration",
            "src": "6554:32:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "DS_DIGEST",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2858,
                "name": "ElementaryTypeName",
                "src": "6592:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "34",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 4",
                  "value": "4"
                },
                "id": 2859,
                "name": "Literal",
                "src": "6618:1:9"
              }
            ],
            "id": 2860,
            "name": "VariableDeclaration",
            "src": "6592:27:9"
          },
          {
            "attributes": {
              "canonicalName": "RRUtils.DS",
              "name": "DS",
              "scope": 3396,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "keytag",
                  "scope": 2869,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2861,
                    "name": "ElementaryTypeName",
                    "src": "6646:6:9"
                  }
                ],
                "id": 2862,
                "name": "VariableDeclaration",
                "src": "6646:13:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "algorithm",
                  "scope": 2869,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2863,
                    "name": "ElementaryTypeName",
                    "src": "6669:5:9"
                  }
                ],
                "id": 2864,
                "name": "VariableDeclaration",
                "src": "6669:15:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "digestType",
                  "scope": 2869,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2865,
                    "name": "ElementaryTypeName",
                    "src": "6694:5:9"
                  }
                ],
                "id": 2866,
                "name": "VariableDeclaration",
                "src": "6694:16:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "digest",
                  "scope": 2869,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2867,
                    "name": "ElementaryTypeName",
                    "src": "6720:5:9"
                  }
                ],
                "id": 2868,
                "name": "VariableDeclaration",
                "src": "6720:12:9"
              }
            ],
            "id": 2869,
            "name": "StructDefinition",
            "src": "6626:113:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "readDS",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2928,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2870,
                        "name": "ElementaryTypeName",
                        "src": "6761:5:9"
                      }
                    ],
                    "id": 2871,
                    "name": "VariableDeclaration",
                    "src": "6761:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 2928,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2872,
                        "name": "ElementaryTypeName",
                        "src": "6780:4:9"
                      }
                    ],
                    "id": 2873,
                    "name": "VariableDeclaration",
                    "src": "6780:11:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "length",
                      "scope": 2928,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2874,
                        "name": "ElementaryTypeName",
                        "src": "6793:4:9"
                      }
                    ],
                    "id": 2875,
                    "name": "VariableDeclaration",
                    "src": "6793:11:9"
                  }
                ],
                "id": 2876,
                "name": "ParameterList",
                "src": "6760:45:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 2928,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.DS",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "DS",
                          "referencedDeclaration": 2869,
                          "type": "struct RRUtils.DS"
                        },
                        "id": 2877,
                        "name": "UserDefinedTypeName",
                        "src": "6828:2:9"
                      }
                    ],
                    "id": 2878,
                    "name": "VariableDeclaration",
                    "src": "6828:14:9"
                  }
                ],
                "id": 2879,
                "name": "ParameterList",
                "src": "6827:16:9"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keytag",
                              "referencedDeclaration": 2862,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2878,
                                  "type": "struct RRUtils.DS memory",
                                  "value": "self"
                                },
                                "id": 2880,
                                "name": "Identifier",
                                "src": "6854:4:9"
                              }
                            ],
                            "id": 2882,
                            "name": "MemberAccess",
                            "src": "6854:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2871,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2883,
                                    "name": "Identifier",
                                    "src": "6868:4:9"
                                  }
                                ],
                                "id": 2884,
                                "name": "MemberAccess",
                                "src": "6868:15:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2873,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2885,
                                    "name": "Identifier",
                                    "src": "6884:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2851,
                                      "type": "uint256",
                                      "value": "DS_KEY_TAG"
                                    },
                                    "id": 2886,
                                    "name": "Identifier",
                                    "src": "6893:10:9"
                                  }
                                ],
                                "id": 2887,
                                "name": "BinaryOperation",
                                "src": "6884:19:9"
                              }
                            ],
                            "id": 2888,
                            "name": "FunctionCall",
                            "src": "6868:36:9"
                          }
                        ],
                        "id": 2889,
                        "name": "Assignment",
                        "src": "6854:50:9"
                      }
                    ],
                    "id": 2890,
                    "name": "ExpressionStatement",
                    "src": "6854:50:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "algorithm",
                              "referencedDeclaration": 2864,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2878,
                                  "type": "struct RRUtils.DS memory",
                                  "value": "self"
                                },
                                "id": 2891,
                                "name": "Identifier",
                                "src": "6914:4:9"
                              }
                            ],
                            "id": 2893,
                            "name": "MemberAccess",
                            "src": "6914:14:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2871,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2894,
                                    "name": "Identifier",
                                    "src": "6931:4:9"
                                  }
                                ],
                                "id": 2895,
                                "name": "MemberAccess",
                                "src": "6931:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2873,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2896,
                                    "name": "Identifier",
                                    "src": "6946:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2854,
                                      "type": "uint256",
                                      "value": "DS_ALGORITHM"
                                    },
                                    "id": 2897,
                                    "name": "Identifier",
                                    "src": "6955:12:9"
                                  }
                                ],
                                "id": 2898,
                                "name": "BinaryOperation",
                                "src": "6946:21:9"
                              }
                            ],
                            "id": 2899,
                            "name": "FunctionCall",
                            "src": "6931:37:9"
                          }
                        ],
                        "id": 2900,
                        "name": "Assignment",
                        "src": "6914:54:9"
                      }
                    ],
                    "id": 2901,
                    "name": "ExpressionStatement",
                    "src": "6914:54:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "digestType",
                              "referencedDeclaration": 2866,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2878,
                                  "type": "struct RRUtils.DS memory",
                                  "value": "self"
                                },
                                "id": 2902,
                                "name": "Identifier",
                                "src": "6978:4:9"
                              }
                            ],
                            "id": 2904,
                            "name": "MemberAccess",
                            "src": "6978:15:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2871,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2905,
                                    "name": "Identifier",
                                    "src": "6996:4:9"
                                  }
                                ],
                                "id": 2906,
                                "name": "MemberAccess",
                                "src": "6996:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2873,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2907,
                                    "name": "Identifier",
                                    "src": "7011:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2857,
                                      "type": "uint256",
                                      "value": "DS_DIGEST_TYPE"
                                    },
                                    "id": 2908,
                                    "name": "Identifier",
                                    "src": "7020:14:9"
                                  }
                                ],
                                "id": 2909,
                                "name": "BinaryOperation",
                                "src": "7011:23:9"
                              }
                            ],
                            "id": 2910,
                            "name": "FunctionCall",
                            "src": "6996:39:9"
                          }
                        ],
                        "id": 2911,
                        "name": "Assignment",
                        "src": "6978:57:9"
                      }
                    ],
                    "id": 2912,
                    "name": "ExpressionStatement",
                    "src": "6978:57:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "digest",
                              "referencedDeclaration": 2868,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2878,
                                  "type": "struct RRUtils.DS memory",
                                  "value": "self"
                                },
                                "id": 2913,
                                "name": "Identifier",
                                "src": "7045:4:9"
                              }
                            ],
                            "id": 2915,
                            "name": "MemberAccess",
                            "src": "7045:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "substring",
                                  "referencedDeclaration": 1955,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2871,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2916,
                                    "name": "Identifier",
                                    "src": "7059:4:9"
                                  }
                                ],
                                "id": 2917,
                                "name": "MemberAccess",
                                "src": "7059:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2873,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2918,
                                    "name": "Identifier",
                                    "src": "7074:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2860,
                                      "type": "uint256",
                                      "value": "DS_DIGEST"
                                    },
                                    "id": 2919,
                                    "name": "Identifier",
                                    "src": "7083:9:9"
                                  }
                                ],
                                "id": 2920,
                                "name": "BinaryOperation",
                                "src": "7074:18:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2875,
                                      "type": "uint256",
                                      "value": "length"
                                    },
                                    "id": 2921,
                                    "name": "Identifier",
                                    "src": "7094:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2860,
                                      "type": "uint256",
                                      "value": "DS_DIGEST"
                                    },
                                    "id": 2922,
                                    "name": "Identifier",
                                    "src": "7103:9:9"
                                  }
                                ],
                                "id": 2923,
                                "name": "BinaryOperation",
                                "src": "7094:18:9"
                              }
                            ],
                            "id": 2924,
                            "name": "FunctionCall",
                            "src": "7059:54:9"
                          }
                        ],
                        "id": 2925,
                        "name": "Assignment",
                        "src": "7045:68:9"
                      }
                    ],
                    "id": 2926,
                    "name": "ExpressionStatement",
                    "src": "7045:68:9"
                  }
                ],
                "id": 2927,
                "name": "Block",
                "src": "6844:276:9"
              }
            ],
            "id": 2928,
            "name": "FunctionDefinition",
            "src": "6745:375:9"
          },
          {
            "attributes": {
              "canonicalName": "RRUtils.NSEC3",
              "name": "NSEC3",
              "scope": 3396,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "hashAlgorithm",
                  "scope": 2941,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2929,
                    "name": "ElementaryTypeName",
                    "src": "7149:5:9"
                  }
                ],
                "id": 2930,
                "name": "VariableDeclaration",
                "src": "7149:19:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "flags",
                  "scope": 2941,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 2931,
                    "name": "ElementaryTypeName",
                    "src": "7178:5:9"
                  }
                ],
                "id": 2932,
                "name": "VariableDeclaration",
                "src": "7178:11:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "iterations",
                  "scope": 2941,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint16",
                      "type": "uint16"
                    },
                    "id": 2933,
                    "name": "ElementaryTypeName",
                    "src": "7199:6:9"
                  }
                ],
                "id": 2934,
                "name": "VariableDeclaration",
                "src": "7199:17:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "salt",
                  "scope": 2941,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2935,
                    "name": "ElementaryTypeName",
                    "src": "7226:5:9"
                  }
                ],
                "id": 2936,
                "name": "VariableDeclaration",
                "src": "7226:10:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "nextHashedOwnerName",
                  "scope": 2941,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 2937,
                    "name": "ElementaryTypeName",
                    "src": "7246:7:9"
                  }
                ],
                "id": 2938,
                "name": "VariableDeclaration",
                "src": "7246:27:9"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "typeBitmap",
                  "scope": 2941,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes"
                    },
                    "id": 2939,
                    "name": "ElementaryTypeName",
                    "src": "7283:5:9"
                  }
                ],
                "id": 2940,
                "name": "VariableDeclaration",
                "src": "7283:16:9"
              }
            ],
            "id": 2941,
            "name": "StructDefinition",
            "src": "7126:180:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "NSEC3_HASH_ALGORITHM",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2942,
                "name": "ElementaryTypeName",
                "src": "7312:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "30",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 0",
                  "value": "0"
                },
                "id": 2943,
                "name": "Literal",
                "src": "7349:1:9"
              }
            ],
            "id": 2944,
            "name": "VariableDeclaration",
            "src": "7312:38:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "NSEC3_FLAGS",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2945,
                "name": "ElementaryTypeName",
                "src": "7356:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "31",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 1",
                  "value": "1"
                },
                "id": 2946,
                "name": "Literal",
                "src": "7384:1:9"
              }
            ],
            "id": 2947,
            "name": "VariableDeclaration",
            "src": "7356:29:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "NSEC3_ITERATIONS",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2948,
                "name": "ElementaryTypeName",
                "src": "7391:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "32",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 2",
                  "value": "2"
                },
                "id": 2949,
                "name": "Literal",
                "src": "7424:1:9"
              }
            ],
            "id": 2950,
            "name": "VariableDeclaration",
            "src": "7391:34:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "NSEC3_SALT_LENGTH",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2951,
                "name": "ElementaryTypeName",
                "src": "7431:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "34",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 4",
                  "value": "4"
                },
                "id": 2952,
                "name": "Literal",
                "src": "7465:1:9"
              }
            ],
            "id": 2953,
            "name": "VariableDeclaration",
            "src": "7431:35:9"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "NSEC3_SALT",
              "scope": 3396,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 2954,
                "name": "ElementaryTypeName",
                "src": "7472:4:9"
              },
              {
                "attributes": {
                  "hexvalue": "35",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 5",
                  "value": "5"
                },
                "id": 2955,
                "name": "Literal",
                "src": "7499:1:9"
              }
            ],
            "id": 2956,
            "name": "VariableDeclaration",
            "src": "7472:28:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "readNSEC3",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 3079,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2957,
                        "name": "ElementaryTypeName",
                        "src": "7526:5:9"
                      }
                    ],
                    "id": 2958,
                    "name": "VariableDeclaration",
                    "src": "7526:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 3079,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2959,
                        "name": "ElementaryTypeName",
                        "src": "7545:4:9"
                      }
                    ],
                    "id": 2960,
                    "name": "VariableDeclaration",
                    "src": "7545:11:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "length",
                      "scope": 3079,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 2961,
                        "name": "ElementaryTypeName",
                        "src": "7558:4:9"
                      }
                    ],
                    "id": 2962,
                    "name": "VariableDeclaration",
                    "src": "7558:11:9"
                  }
                ],
                "id": 2963,
                "name": "ParameterList",
                "src": "7525:45:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 3079,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.NSEC3",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "NSEC3",
                          "referencedDeclaration": 2941,
                          "type": "struct RRUtils.NSEC3"
                        },
                        "id": 2964,
                        "name": "UserDefinedTypeName",
                        "src": "7593:5:9"
                      }
                    ],
                    "id": 2965,
                    "name": "VariableDeclaration",
                    "src": "7593:17:9"
                  }
                ],
                "id": 2966,
                "name": "ParameterList",
                "src": "7592:19:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2968
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "end",
                          "scope": 3078,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2967,
                            "name": "ElementaryTypeName",
                            "src": "7622:4:9"
                          }
                        ],
                        "id": 2968,
                        "name": "VariableDeclaration",
                        "src": "7622:8:9"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2960,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 2969,
                            "name": "Identifier",
                            "src": "7633:6:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2962,
                              "type": "uint256",
                              "value": "length"
                            },
                            "id": 2970,
                            "name": "Identifier",
                            "src": "7642:6:9"
                          }
                        ],
                        "id": 2971,
                        "name": "BinaryOperation",
                        "src": "7633:15:9"
                      }
                    ],
                    "id": 2972,
                    "name": "VariableDeclarationStatement",
                    "src": "7622:26:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "hashAlgorithm",
                              "referencedDeclaration": 2930,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2965,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 2973,
                                "name": "Identifier",
                                "src": "7658:4:9"
                              }
                            ],
                            "id": 2975,
                            "name": "MemberAccess",
                            "src": "7658:18:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2958,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2976,
                                    "name": "Identifier",
                                    "src": "7679:4:9"
                                  }
                                ],
                                "id": 2977,
                                "name": "MemberAccess",
                                "src": "7679:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2960,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2978,
                                    "name": "Identifier",
                                    "src": "7694:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2944,
                                      "type": "uint256",
                                      "value": "NSEC3_HASH_ALGORITHM"
                                    },
                                    "id": 2979,
                                    "name": "Identifier",
                                    "src": "7703:20:9"
                                  }
                                ],
                                "id": 2980,
                                "name": "BinaryOperation",
                                "src": "7694:29:9"
                              }
                            ],
                            "id": 2981,
                            "name": "FunctionCall",
                            "src": "7679:45:9"
                          }
                        ],
                        "id": 2982,
                        "name": "Assignment",
                        "src": "7658:66:9"
                      }
                    ],
                    "id": 2983,
                    "name": "ExpressionStatement",
                    "src": "7658:66:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "flags",
                              "referencedDeclaration": 2932,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2965,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 2984,
                                "name": "Identifier",
                                "src": "7734:4:9"
                              }
                            ],
                            "id": 2986,
                            "name": "MemberAccess",
                            "src": "7734:10:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2958,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2987,
                                    "name": "Identifier",
                                    "src": "7747:4:9"
                                  }
                                ],
                                "id": 2988,
                                "name": "MemberAccess",
                                "src": "7747:14:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2960,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 2989,
                                    "name": "Identifier",
                                    "src": "7762:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2947,
                                      "type": "uint256",
                                      "value": "NSEC3_FLAGS"
                                    },
                                    "id": 2990,
                                    "name": "Identifier",
                                    "src": "7771:11:9"
                                  }
                                ],
                                "id": 2991,
                                "name": "BinaryOperation",
                                "src": "7762:20:9"
                              }
                            ],
                            "id": 2992,
                            "name": "FunctionCall",
                            "src": "7747:36:9"
                          }
                        ],
                        "id": 2993,
                        "name": "Assignment",
                        "src": "7734:49:9"
                      }
                    ],
                    "id": 2994,
                    "name": "ExpressionStatement",
                    "src": "7734:49:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "iterations",
                              "referencedDeclaration": 2934,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2965,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 2995,
                                "name": "Identifier",
                                "src": "7793:4:9"
                              }
                            ],
                            "id": 2997,
                            "name": "MemberAccess",
                            "src": "7793:15:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint16",
                                  "referencedDeclaration": 1784,
                                  "type": "function (bytes memory,uint256) pure returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2958,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 2998,
                                    "name": "Identifier",
                                    "src": "7811:4:9"
                                  }
                                ],
                                "id": 2999,
                                "name": "MemberAccess",
                                "src": "7811:15:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2960,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 3000,
                                    "name": "Identifier",
                                    "src": "7827:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2950,
                                      "type": "uint256",
                                      "value": "NSEC3_ITERATIONS"
                                    },
                                    "id": 3001,
                                    "name": "Identifier",
                                    "src": "7836:16:9"
                                  }
                                ],
                                "id": 3002,
                                "name": "BinaryOperation",
                                "src": "7827:25:9"
                              }
                            ],
                            "id": 3003,
                            "name": "FunctionCall",
                            "src": "7811:42:9"
                          }
                        ],
                        "id": 3004,
                        "name": "Assignment",
                        "src": "7793:60:9"
                      }
                    ],
                    "id": 3005,
                    "name": "ExpressionStatement",
                    "src": "7793:60:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3007
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "saltLength",
                          "scope": 3078,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 3006,
                            "name": "ElementaryTypeName",
                            "src": "7863:5:9"
                          }
                        ],
                        "id": 3007,
                        "name": "VariableDeclaration",
                        "src": "7863:16:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint8",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "readUint8",
                              "referencedDeclaration": 1764,
                              "type": "function (bytes memory,uint256) pure returns (uint8)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2958,
                                  "type": "bytes memory",
                                  "value": "data"
                                },
                                "id": 3008,
                                "name": "Identifier",
                                "src": "7882:4:9"
                              }
                            ],
                            "id": 3009,
                            "name": "MemberAccess",
                            "src": "7882:14:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2960,
                                  "type": "uint256",
                                  "value": "offset"
                                },
                                "id": 3010,
                                "name": "Identifier",
                                "src": "7897:6:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2953,
                                  "type": "uint256",
                                  "value": "NSEC3_SALT_LENGTH"
                                },
                                "id": 3011,
                                "name": "Identifier",
                                "src": "7906:17:9"
                              }
                            ],
                            "id": 3012,
                            "name": "BinaryOperation",
                            "src": "7897:26:9"
                          }
                        ],
                        "id": 3013,
                        "name": "FunctionCall",
                        "src": "7882:42:9"
                      }
                    ],
                    "id": 3014,
                    "name": "VariableDeclarationStatement",
                    "src": "7863:61:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2960,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 3015,
                            "name": "Identifier",
                            "src": "7934:6:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2960,
                                  "type": "uint256",
                                  "value": "offset"
                                },
                                "id": 3016,
                                "name": "Identifier",
                                "src": "7943:6:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2956,
                                  "type": "uint256",
                                  "value": "NSEC3_SALT"
                                },
                                "id": 3017,
                                "name": "Identifier",
                                "src": "7952:10:9"
                              }
                            ],
                            "id": 3018,
                            "name": "BinaryOperation",
                            "src": "7943:19:9"
                          }
                        ],
                        "id": 3019,
                        "name": "Assignment",
                        "src": "7934:28:9"
                      }
                    ],
                    "id": 3020,
                    "name": "ExpressionStatement",
                    "src": "7934:28:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "salt",
                              "referencedDeclaration": 2936,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2965,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 3021,
                                "name": "Identifier",
                                "src": "7972:4:9"
                              }
                            ],
                            "id": 3023,
                            "name": "MemberAccess",
                            "src": "7972:9:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "substring",
                                  "referencedDeclaration": 1955,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2958,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 3024,
                                    "name": "Identifier",
                                    "src": "7984:4:9"
                                  }
                                ],
                                "id": 3025,
                                "name": "MemberAccess",
                                "src": "7984:14:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2960,
                                  "type": "uint256",
                                  "value": "offset"
                                },
                                "id": 3026,
                                "name": "Identifier",
                                "src": "7999:6:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3007,
                                  "type": "uint8",
                                  "value": "saltLength"
                                },
                                "id": 3027,
                                "name": "Identifier",
                                "src": "8007:10:9"
                              }
                            ],
                            "id": 3028,
                            "name": "FunctionCall",
                            "src": "7984:34:9"
                          }
                        ],
                        "id": 3029,
                        "name": "Assignment",
                        "src": "7972:46:9"
                      }
                    ],
                    "id": 3030,
                    "name": "ExpressionStatement",
                    "src": "7972:46:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2960,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 3031,
                            "name": "Identifier",
                            "src": "8028:6:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3007,
                              "type": "uint8",
                              "value": "saltLength"
                            },
                            "id": 3032,
                            "name": "Identifier",
                            "src": "8038:10:9"
                          }
                        ],
                        "id": 3033,
                        "name": "Assignment",
                        "src": "8028:20:9"
                      }
                    ],
                    "id": 3034,
                    "name": "ExpressionStatement",
                    "src": "8028:20:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3036
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "nextLength",
                          "scope": 3078,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 3035,
                            "name": "ElementaryTypeName",
                            "src": "8058:5:9"
                          }
                        ],
                        "id": 3036,
                        "name": "VariableDeclaration",
                        "src": "8058:16:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint8",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "readUint8",
                              "referencedDeclaration": 1764,
                              "type": "function (bytes memory,uint256) pure returns (uint8)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2958,
                                  "type": "bytes memory",
                                  "value": "data"
                                },
                                "id": 3037,
                                "name": "Identifier",
                                "src": "8077:4:9"
                              }
                            ],
                            "id": 3038,
                            "name": "MemberAccess",
                            "src": "8077:14:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2960,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 3039,
                            "name": "Identifier",
                            "src": "8092:6:9"
                          }
                        ],
                        "id": 3040,
                        "name": "FunctionCall",
                        "src": "8077:22:9"
                      }
                    ],
                    "id": 3041,
                    "name": "VariableDeclarationStatement",
                    "src": "8058:41:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3042,
                            "name": "Identifier",
                            "src": "8109:7:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3036,
                                  "type": "uint8",
                                  "value": "nextLength"
                                },
                                "id": 3043,
                                "name": "Identifier",
                                "src": "8117:10:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 3044,
                                "name": "Literal",
                                "src": "8131:2:9"
                              }
                            ],
                            "id": 3045,
                            "name": "BinaryOperation",
                            "src": "8117:16:9"
                          }
                        ],
                        "id": 3046,
                        "name": "FunctionCall",
                        "src": "8109:25:9"
                      }
                    ],
                    "id": 3047,
                    "name": "ExpressionStatement",
                    "src": "8109:25:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2960,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 3048,
                            "name": "Identifier",
                            "src": "8144:6:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 3049,
                            "name": "Literal",
                            "src": "8154:1:9"
                          }
                        ],
                        "id": 3050,
                        "name": "Assignment",
                        "src": "8144:11:9"
                      }
                    ],
                    "id": 3051,
                    "name": "ExpressionStatement",
                    "src": "8144:11:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "nextHashedOwnerName",
                              "referencedDeclaration": 2938,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2965,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 3052,
                                "name": "Identifier",
                                "src": "8165:4:9"
                              }
                            ],
                            "id": 3054,
                            "name": "MemberAccess",
                            "src": "8165:24:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readBytesN",
                                  "referencedDeclaration": 1872,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2958,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 3055,
                                    "name": "Identifier",
                                    "src": "8192:4:9"
                                  }
                                ],
                                "id": 3056,
                                "name": "MemberAccess",
                                "src": "8192:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2960,
                                  "type": "uint256",
                                  "value": "offset"
                                },
                                "id": 3057,
                                "name": "Identifier",
                                "src": "8208:6:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3036,
                                  "type": "uint8",
                                  "value": "nextLength"
                                },
                                "id": 3058,
                                "name": "Identifier",
                                "src": "8216:10:9"
                              }
                            ],
                            "id": 3059,
                            "name": "FunctionCall",
                            "src": "8192:35:9"
                          }
                        ],
                        "id": 3060,
                        "name": "Assignment",
                        "src": "8165:62:9"
                      }
                    ],
                    "id": 3061,
                    "name": "ExpressionStatement",
                    "src": "8165:62:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2960,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 3062,
                            "name": "Identifier",
                            "src": "8237:6:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3036,
                              "type": "uint8",
                              "value": "nextLength"
                            },
                            "id": 3063,
                            "name": "Identifier",
                            "src": "8247:10:9"
                          }
                        ],
                        "id": 3064,
                        "name": "Assignment",
                        "src": "8237:20:9"
                      }
                    ],
                    "id": 3065,
                    "name": "ExpressionStatement",
                    "src": "8237:20:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "typeBitmap",
                              "referencedDeclaration": 2940,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2965,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 3066,
                                "name": "Identifier",
                                "src": "8267:4:9"
                              }
                            ],
                            "id": 3068,
                            "name": "MemberAccess",
                            "src": "8267:15:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "substring",
                                  "referencedDeclaration": 1955,
                                  "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2958,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 3069,
                                    "name": "Identifier",
                                    "src": "8285:4:9"
                                  }
                                ],
                                "id": 3070,
                                "name": "MemberAccess",
                                "src": "8285:14:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2960,
                                  "type": "uint256",
                                  "value": "offset"
                                },
                                "id": 3071,
                                "name": "Identifier",
                                "src": "8300:6:9"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2968,
                                      "type": "uint256",
                                      "value": "end"
                                    },
                                    "id": 3072,
                                    "name": "Identifier",
                                    "src": "8308:3:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2960,
                                      "type": "uint256",
                                      "value": "offset"
                                    },
                                    "id": 3073,
                                    "name": "Identifier",
                                    "src": "8314:6:9"
                                  }
                                ],
                                "id": 3074,
                                "name": "BinaryOperation",
                                "src": "8308:12:9"
                              }
                            ],
                            "id": 3075,
                            "name": "FunctionCall",
                            "src": "8285:36:9"
                          }
                        ],
                        "id": 3076,
                        "name": "Assignment",
                        "src": "8267:54:9"
                      }
                    ],
                    "id": 3077,
                    "name": "ExpressionStatement",
                    "src": "8267:54:9"
                  }
                ],
                "id": 3078,
                "name": "Block",
                "src": "7612:716:9"
              }
            ],
            "id": 3079,
            "name": "FunctionDefinition",
            "src": "7507:821:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "checkTypeBitmap",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 3096,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct RRUtils.NSEC3",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "NSEC3",
                          "referencedDeclaration": 2941,
                          "type": "struct RRUtils.NSEC3"
                        },
                        "id": 3080,
                        "name": "UserDefinedTypeName",
                        "src": "8359:5:9"
                      }
                    ],
                    "id": 3081,
                    "name": "VariableDeclaration",
                    "src": "8359:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "rrtype",
                      "scope": 3096,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 3082,
                        "name": "ElementaryTypeName",
                        "src": "8378:6:9"
                      }
                    ],
                    "id": 3083,
                    "name": "VariableDeclaration",
                    "src": "8378:13:9"
                  }
                ],
                "id": 3084,
                "name": "ParameterList",
                "src": "8358:34:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3096,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3085,
                        "name": "ElementaryTypeName",
                        "src": "8415:4:9"
                      }
                    ],
                    "id": 3086,
                    "name": "VariableDeclaration",
                    "src": "8415:4:9"
                  }
                ],
                "id": 3087,
                "name": "ParameterList",
                "src": "8414:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3087
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "overloadedDeclarations": [
                                3096,
                                3221
                              ],
                              "referencedDeclaration": 3221,
                              "type": "function (bytes memory,uint256,uint16) pure returns (bool)",
                              "value": "checkTypeBitmap"
                            },
                            "id": 3088,
                            "name": "Identifier",
                            "src": "8438:15:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "typeBitmap",
                              "referencedDeclaration": 2940,
                              "type": "bytes memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3081,
                                  "type": "struct RRUtils.NSEC3 memory",
                                  "value": "self"
                                },
                                "id": 3089,
                                "name": "Identifier",
                                "src": "8454:4:9"
                              }
                            ],
                            "id": 3090,
                            "name": "MemberAccess",
                            "src": "8454:15:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3091,
                            "name": "Literal",
                            "src": "8471:1:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3083,
                              "type": "uint16",
                              "value": "rrtype"
                            },
                            "id": 3092,
                            "name": "Identifier",
                            "src": "8474:6:9"
                          }
                        ],
                        "id": 3093,
                        "name": "FunctionCall",
                        "src": "8438:43:9"
                      }
                    ],
                    "id": 3094,
                    "name": "Return",
                    "src": "8431:50:9"
                  }
                ],
                "id": 3095,
                "name": "Block",
                "src": "8421:67:9"
              }
            ],
            "id": 3096,
            "name": "FunctionDefinition",
            "src": "8334:154:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "checkTypeBitmap",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Checks if a given RR type exists in a type bitmap.\n @param bitmap The byte string to read the type bitmap from.\n @param offset The offset to start reading at.\n @param rrtype The RR type to check for.\n @return True if the type is found in the bitmap, false otherwise."
                },
                "id": 3097,
                "name": "StructuredDocumentation",
                "src": "8494:308:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "bitmap",
                      "scope": 3221,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3098,
                        "name": "ElementaryTypeName",
                        "src": "8832:5:9"
                      }
                    ],
                    "id": 3099,
                    "name": "VariableDeclaration",
                    "src": "8832:19:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "offset",
                      "scope": 3221,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3100,
                        "name": "ElementaryTypeName",
                        "src": "8853:4:9"
                      }
                    ],
                    "id": 3101,
                    "name": "VariableDeclaration",
                    "src": "8853:11:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "rrtype",
                      "scope": 3221,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 3102,
                        "name": "ElementaryTypeName",
                        "src": "8866:6:9"
                      }
                    ],
                    "id": 3103,
                    "name": "VariableDeclaration",
                    "src": "8866:13:9"
                  }
                ],
                "id": 3104,
                "name": "ParameterList",
                "src": "8831:49:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3221,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3105,
                        "name": "ElementaryTypeName",
                        "src": "8904:4:9"
                      }
                    ],
                    "id": 3106,
                    "name": "VariableDeclaration",
                    "src": "8904:4:9"
                  }
                ],
                "id": 3107,
                "name": "ParameterList",
                "src": "8903:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3109
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "typeWindow",
                          "scope": 3220,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 3108,
                            "name": "ElementaryTypeName",
                            "src": "8920:5:9"
                          }
                        ],
                        "id": 3109,
                        "name": "VariableDeclaration",
                        "src": "8920:16:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint8",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint8)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint8"
                                },
                                "id": 3110,
                                "name": "ElementaryTypeName",
                                "src": "8939:5:9"
                              }
                            ],
                            "id": 3111,
                            "name": "ElementaryTypeNameExpression",
                            "src": "8939:5:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">>",
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3103,
                                  "type": "uint16",
                                  "value": "rrtype"
                                },
                                "id": 3112,
                                "name": "Identifier",
                                "src": "8945:6:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "38",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "8"
                                },
                                "id": 3113,
                                "name": "Literal",
                                "src": "8955:1:9"
                              }
                            ],
                            "id": 3114,
                            "name": "BinaryOperation",
                            "src": "8945:11:9"
                          }
                        ],
                        "id": 3115,
                        "name": "FunctionCall",
                        "src": "8939:18:9"
                      }
                    ],
                    "id": 3116,
                    "name": "VariableDeclarationStatement",
                    "src": "8920:37:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3118
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "windowByte",
                          "scope": 3220,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 3117,
                            "name": "ElementaryTypeName",
                            "src": "8967:5:9"
                          }
                        ],
                        "id": 3118,
                        "name": "VariableDeclaration",
                        "src": "8967:16:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint8",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint8)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint8"
                                },
                                "id": 3119,
                                "name": "ElementaryTypeName",
                                "src": "8986:5:9"
                              }
                            ],
                            "id": 3120,
                            "name": "ElementaryTypeNameExpression",
                            "src": "8986:5:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "/",
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint16"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "&",
                                      "type": "uint16"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3103,
                                          "type": "uint16",
                                          "value": "rrtype"
                                        },
                                        "id": 3121,
                                        "name": "Identifier",
                                        "src": "8993:6:9"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "30786666",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 255",
                                          "value": "0xff"
                                        },
                                        "id": 3122,
                                        "name": "Literal",
                                        "src": "9002:4:9"
                                      }
                                    ],
                                    "id": 3123,
                                    "name": "BinaryOperation",
                                    "src": "8993:13:9"
                                  }
                                ],
                                "id": 3124,
                                "name": "TupleExpression",
                                "src": "8992:15:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "38",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 8",
                                  "value": "8"
                                },
                                "id": 3125,
                                "name": "Literal",
                                "src": "9010:1:9"
                              }
                            ],
                            "id": 3126,
                            "name": "BinaryOperation",
                            "src": "8992:19:9"
                          }
                        ],
                        "id": 3127,
                        "name": "FunctionCall",
                        "src": "8986:26:9"
                      }
                    ],
                    "id": 3128,
                    "name": "VariableDeclarationStatement",
                    "src": "8967:45:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3130
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "windowBitmask",
                          "scope": 3220,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint8",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint8",
                              "type": "uint8"
                            },
                            "id": 3129,
                            "name": "ElementaryTypeName",
                            "src": "9022:5:9"
                          }
                        ],
                        "id": 3130,
                        "name": "VariableDeclaration",
                        "src": "9022:19:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint8",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint8)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint8"
                                },
                                "id": 3131,
                                "name": "ElementaryTypeName",
                                "src": "9044:5:9"
                              }
                            ],
                            "id": 3132,
                            "name": "ElementaryTypeNameExpression",
                            "src": "9044:5:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<<",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint8",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint8)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint8"
                                        },
                                        "id": 3133,
                                        "name": "ElementaryTypeName",
                                        "src": "9050:5:9"
                                      }
                                    ],
                                    "id": 3134,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "9050:5:9"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 3135,
                                    "name": "Literal",
                                    "src": "9056:1:9"
                                  }
                                ],
                                "id": 3136,
                                "name": "FunctionCall",
                                "src": "9050:8:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint8",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_7_by_1",
                                                  "typeString": "int_const 7"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint8)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint8"
                                                },
                                                "id": 3137,
                                                "name": "ElementaryTypeName",
                                                "src": "9063:5:9"
                                              }
                                            ],
                                            "id": 3138,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "9063:5:9"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "37",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 7",
                                              "value": "7"
                                            },
                                            "id": 3139,
                                            "name": "Literal",
                                            "src": "9069:1:9"
                                          }
                                        ],
                                        "id": 3140,
                                        "name": "FunctionCall",
                                        "src": "9063:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint8",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint8)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint8"
                                                },
                                                "id": 3141,
                                                "name": "ElementaryTypeName",
                                                "src": "9074:5:9"
                                              }
                                            ],
                                            "id": 3142,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "9074:5:9"
                                          },
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&",
                                              "type": "uint16"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3103,
                                                  "type": "uint16",
                                                  "value": "rrtype"
                                                },
                                                "id": 3143,
                                                "name": "Identifier",
                                                "src": "9080:6:9"
                                              },
                                              {
                                                "attributes": {
                                                  "hexvalue": "307837",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "token": "number",
                                                  "type": "int_const 7",
                                                  "value": "0x7"
                                                },
                                                "id": 3144,
                                                "name": "Literal",
                                                "src": "9089:3:9"
                                              }
                                            ],
                                            "id": 3145,
                                            "name": "BinaryOperation",
                                            "src": "9080:12:9"
                                          }
                                        ],
                                        "id": 3146,
                                        "name": "FunctionCall",
                                        "src": "9074:19:9"
                                      }
                                    ],
                                    "id": 3147,
                                    "name": "BinaryOperation",
                                    "src": "9063:30:9"
                                  }
                                ],
                                "id": 3148,
                                "name": "TupleExpression",
                                "src": "9062:32:9"
                              }
                            ],
                            "id": 3149,
                            "name": "BinaryOperation",
                            "src": "9050:44:9"
                          }
                        ],
                        "id": 3150,
                        "name": "FunctionCall",
                        "src": "9044:51:9"
                      }
                    ],
                    "id": 3151,
                    "name": "VariableDeclarationStatement",
                    "src": "9022:73:9"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            3153
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "off",
                              "scope": 3217,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 3152,
                                "name": "ElementaryTypeName",
                                "src": "9110:4:9"
                              }
                            ],
                            "id": 3153,
                            "name": "VariableDeclaration",
                            "src": "9110:8:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3101,
                              "type": "uint256",
                              "value": "offset"
                            },
                            "id": 3154,
                            "name": "Identifier",
                            "src": "9121:6:9"
                          }
                        ],
                        "id": 3155,
                        "name": "VariableDeclarationStatement",
                        "src": "9110:17:9"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3153,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 3156,
                            "name": "Identifier",
                            "src": "9129:3:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3099,
                                  "type": "bytes memory",
                                  "value": "bitmap"
                                },
                                "id": 3157,
                                "name": "Identifier",
                                "src": "9135:6:9"
                              }
                            ],
                            "id": 3158,
                            "name": "MemberAccess",
                            "src": "9135:13:9"
                          }
                        ],
                        "id": 3159,
                        "name": "BinaryOperation",
                        "src": "9129:19:9"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                3161
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "window",
                                  "scope": 3216,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint8",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint8",
                                      "type": "uint8"
                                    },
                                    "id": 3160,
                                    "name": "ElementaryTypeName",
                                    "src": "9165:5:9"
                                  }
                                ],
                                "id": 3161,
                                "name": "VariableDeclaration",
                                "src": "9165:12:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint8",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "readUint8",
                                      "referencedDeclaration": 1764,
                                      "type": "function (bytes memory,uint256) pure returns (uint8)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3099,
                                          "type": "bytes memory",
                                          "value": "bitmap"
                                        },
                                        "id": 3162,
                                        "name": "Identifier",
                                        "src": "9180:6:9"
                                      }
                                    ],
                                    "id": 3163,
                                    "name": "MemberAccess",
                                    "src": "9180:16:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3153,
                                      "type": "uint256",
                                      "value": "off"
                                    },
                                    "id": 3164,
                                    "name": "Identifier",
                                    "src": "9197:3:9"
                                  }
                                ],
                                "id": 3165,
                                "name": "FunctionCall",
                                "src": "9180:21:9"
                              }
                            ],
                            "id": 3166,
                            "name": "VariableDeclarationStatement",
                            "src": "9165:36:9"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                3168
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "len",
                                  "scope": 3216,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint8",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint8",
                                      "type": "uint8"
                                    },
                                    "id": 3167,
                                    "name": "ElementaryTypeName",
                                    "src": "9215:5:9"
                                  }
                                ],
                                "id": 3168,
                                "name": "VariableDeclaration",
                                "src": "9215:9:9"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint8",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "readUint8",
                                      "referencedDeclaration": 1764,
                                      "type": "function (bytes memory,uint256) pure returns (uint8)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3099,
                                          "type": "bytes memory",
                                          "value": "bitmap"
                                        },
                                        "id": 3169,
                                        "name": "Identifier",
                                        "src": "9227:6:9"
                                      }
                                    ],
                                    "id": 3170,
                                    "name": "MemberAccess",
                                    "src": "9227:16:9"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3153,
                                          "type": "uint256",
                                          "value": "off"
                                        },
                                        "id": 3171,
                                        "name": "Identifier",
                                        "src": "9244:3:9"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 3172,
                                        "name": "Literal",
                                        "src": "9250:1:9"
                                      }
                                    ],
                                    "id": 3173,
                                    "name": "BinaryOperation",
                                    "src": "9244:7:9"
                                  }
                                ],
                                "id": 3174,
                                "name": "FunctionCall",
                                "src": "9227:25:9"
                              }
                            ],
                            "id": 3175,
                            "name": "VariableDeclarationStatement",
                            "src": "9215:37:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3109,
                                      "type": "uint8",
                                      "value": "typeWindow"
                                    },
                                    "id": 3176,
                                    "name": "Identifier",
                                    "src": "9270:10:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3161,
                                      "type": "uint8",
                                      "value": "window"
                                    },
                                    "id": 3177,
                                    "name": "Identifier",
                                    "src": "9283:6:9"
                                  }
                                ],
                                "id": 3178,
                                "name": "BinaryOperation",
                                "src": "9270:19:9"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 3107
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 3179,
                                        "name": "Literal",
                                        "src": "9378:5:9"
                                      }
                                    ],
                                    "id": 3180,
                                    "name": "Return",
                                    "src": "9371:12:9"
                                  }
                                ],
                                "id": 3181,
                                "name": "Block",
                                "src": "9291:107:9"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3109,
                                          "type": "uint8",
                                          "value": "typeWindow"
                                        },
                                        "id": 3182,
                                        "name": "Identifier",
                                        "src": "9408:10:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3161,
                                          "type": "uint8",
                                          "value": "window"
                                        },
                                        "id": 3183,
                                        "name": "Identifier",
                                        "src": "9422:6:9"
                                      }
                                    ],
                                    "id": 3184,
                                    "name": "BinaryOperation",
                                    "src": "9408:20:9"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {},
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "<=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3168,
                                                  "type": "uint8",
                                                  "value": "len"
                                                },
                                                "id": 3185,
                                                "name": "Identifier",
                                                "src": "9494:3:9"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3118,
                                                  "type": "uint8",
                                                  "value": "windowByte"
                                                },
                                                "id": 3186,
                                                "name": "Identifier",
                                                "src": "9501:10:9"
                                              }
                                            ],
                                            "id": 3187,
                                            "name": "BinaryOperation",
                                            "src": "9494:17:9"
                                          },
                                          {
                                            "children": [
                                              {
                                                "attributes": {
                                                  "functionReturnParameters": 3107
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "66616c7365",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "bool",
                                                      "type": "bool",
                                                      "value": "false"
                                                    },
                                                    "id": 3188,
                                                    "name": "Literal",
                                                    "src": "9604:5:9"
                                                  }
                                                ],
                                                "id": 3189,
                                                "name": "Return",
                                                "src": "9597:12:9"
                                              }
                                            ],
                                            "id": 3190,
                                            "name": "Block",
                                            "src": "9513:115:9"
                                          }
                                        ],
                                        "id": 3191,
                                        "name": "IfStatement",
                                        "src": "9490:138:9"
                                      },
                                      {
                                        "attributes": {
                                          "functionReturnParameters": 3107
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "uint8"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "&",
                                                      "type": "uint8"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "isStructConstructorCall": false,
                                                          "lValueRequested": false,
                                                          "names": [
                                                            null
                                                          ],
                                                          "tryCall": false,
                                                          "type": "uint8",
                                                          "type_conversion": false
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              ],
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "member_name": "readUint8",
                                                              "referencedDeclaration": 1764,
                                                              "type": "function (bytes memory,uint256) pure returns (uint8)"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "overloadedDeclarations": [
                                                                    null
                                                                  ],
                                                                  "referencedDeclaration": 3099,
                                                                  "type": "bytes memory",
                                                                  "value": "bitmap"
                                                                },
                                                                "id": 3192,
                                                                "name": "Identifier",
                                                                "src": "9653:6:9"
                                                              }
                                                            ],
                                                            "id": 3193,
                                                            "name": "MemberAccess",
                                                            "src": "9653:16:9"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "operator": "+",
                                                              "type": "uint256"
                                                            },
                                                            "children": [
                                                              {
                                                                "attributes": {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  },
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "operator": "+",
                                                                  "type": "uint256"
                                                                },
                                                                "children": [
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 3153,
                                                                      "type": "uint256",
                                                                      "value": "off"
                                                                    },
                                                                    "id": 3194,
                                                                    "name": "Identifier",
                                                                    "src": "9670:3:9"
                                                                  },
                                                                  {
                                                                    "attributes": {
                                                                      "overloadedDeclarations": [
                                                                        null
                                                                      ],
                                                                      "referencedDeclaration": 3118,
                                                                      "type": "uint8",
                                                                      "value": "windowByte"
                                                                    },
                                                                    "id": 3195,
                                                                    "name": "Identifier",
                                                                    "src": "9676:10:9"
                                                                  }
                                                                ],
                                                                "id": 3196,
                                                                "name": "BinaryOperation",
                                                                "src": "9670:16:9"
                                                              },
                                                              {
                                                                "attributes": {
                                                                  "hexvalue": "32",
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "lValueRequested": false,
                                                                  "token": "number",
                                                                  "type": "int_const 2",
                                                                  "value": "2"
                                                                },
                                                                "id": 3197,
                                                                "name": "Literal",
                                                                "src": "9689:1:9"
                                                              }
                                                            ],
                                                            "id": 3198,
                                                            "name": "BinaryOperation",
                                                            "src": "9670:20:9"
                                                          }
                                                        ],
                                                        "id": 3199,
                                                        "name": "FunctionCall",
                                                        "src": "9653:38:9"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3130,
                                                          "type": "uint8",
                                                          "value": "windowBitmask"
                                                        },
                                                        "id": 3200,
                                                        "name": "Identifier",
                                                        "src": "9694:13:9"
                                                      }
                                                    ],
                                                    "id": 3201,
                                                    "name": "BinaryOperation",
                                                    "src": "9653:54:9"
                                                  }
                                                ],
                                                "id": 3202,
                                                "name": "TupleExpression",
                                                "src": "9652:56:9"
                                              },
                                              {
                                                "attributes": {
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 3203,
                                                "name": "Literal",
                                                "src": "9712:1:9"
                                              }
                                            ],
                                            "id": 3204,
                                            "name": "BinaryOperation",
                                            "src": "9652:61:9"
                                          }
                                        ],
                                        "id": 3205,
                                        "name": "Return",
                                        "src": "9645:68:9"
                                      }
                                    ],
                                    "id": 3206,
                                    "name": "Block",
                                    "src": "9430:298:9"
                                  },
                                  {
                                    "children": [
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "+=",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3153,
                                                  "type": "uint256",
                                                  "value": "off"
                                                },
                                                "id": 3207,
                                                "name": "Identifier",
                                                "src": "9793:3:9"
                                              },
                                              {
                                                "attributes": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "+",
                                                  "type": "uint8"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3168,
                                                      "type": "uint8",
                                                      "value": "len"
                                                    },
                                                    "id": 3208,
                                                    "name": "Identifier",
                                                    "src": "9800:3:9"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "hexvalue": "32",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "token": "number",
                                                      "type": "int_const 2",
                                                      "value": "2"
                                                    },
                                                    "id": 3209,
                                                    "name": "Literal",
                                                    "src": "9806:1:9"
                                                  }
                                                ],
                                                "id": 3210,
                                                "name": "BinaryOperation",
                                                "src": "9800:7:9"
                                              }
                                            ],
                                            "id": 3211,
                                            "name": "Assignment",
                                            "src": "9793:14:9"
                                          }
                                        ],
                                        "id": 3212,
                                        "name": "ExpressionStatement",
                                        "src": "9793:14:9"
                                      }
                                    ],
                                    "id": 3213,
                                    "name": "Block",
                                    "src": "9734:88:9"
                                  }
                                ],
                                "id": 3214,
                                "name": "IfStatement",
                                "src": "9404:418:9"
                              }
                            ],
                            "id": 3215,
                            "name": "IfStatement",
                            "src": "9266:556:9"
                          }
                        ],
                        "id": 3216,
                        "name": "Block",
                        "src": "9151:681:9"
                      }
                    ],
                    "id": 3217,
                    "name": "ForStatement",
                    "src": "9105:727:9"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3107
                    },
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "66616c7365",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "bool",
                          "type": "bool",
                          "value": "false"
                        },
                        "id": 3218,
                        "name": "Literal",
                        "src": "9849:5:9"
                      }
                    ],
                    "id": 3219,
                    "name": "Return",
                    "src": "9842:12:9"
                  }
                ],
                "id": 3220,
                "name": "Block",
                "src": "8910:951:9"
              }
            ],
            "id": 3221,
            "name": "FunctionDefinition",
            "src": "8807:1054:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "compareNames",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 3376,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3222,
                        "name": "ElementaryTypeName",
                        "src": "9889:5:9"
                      }
                    ],
                    "id": 3223,
                    "name": "VariableDeclaration",
                    "src": "9889:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "other",
                      "scope": 3376,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3224,
                        "name": "ElementaryTypeName",
                        "src": "9908:5:9"
                      }
                    ],
                    "id": 3225,
                    "name": "VariableDeclaration",
                    "src": "9908:18:9"
                  }
                ],
                "id": 3226,
                "name": "ParameterList",
                "src": "9888:39:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3376,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int",
                          "type": "int256"
                        },
                        "id": 3227,
                        "name": "ElementaryTypeName",
                        "src": "9951:3:9"
                      }
                    ],
                    "id": 3228,
                    "name": "VariableDeclaration",
                    "src": "9951:3:9"
                  }
                ],
                "id": 3229,
                "name": "ParameterList",
                "src": "9950:5:9"
              },
              {
                "children": [
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "equals",
                              "referencedDeclaration": 1747,
                              "type": "function (bytes memory,bytes memory) pure returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3223,
                                  "type": "bytes memory",
                                  "value": "self"
                                },
                                "id": 3230,
                                "name": "Identifier",
                                "src": "9970:4:9"
                              }
                            ],
                            "id": 3231,
                            "name": "MemberAccess",
                            "src": "9970:11:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3225,
                              "type": "bytes memory",
                              "value": "other"
                            },
                            "id": 3232,
                            "name": "Identifier",
                            "src": "9982:5:9"
                          }
                        ],
                        "id": 3233,
                        "name": "FunctionCall",
                        "src": "9970:18:9"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3229
                            },
                            "children": [
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3234,
                                "name": "Literal",
                                "src": "10011:1:9"
                              }
                            ],
                            "id": 3235,
                            "name": "Return",
                            "src": "10004:8:9"
                          }
                        ],
                        "id": 3236,
                        "name": "Block",
                        "src": "9990:33:9"
                      }
                    ],
                    "id": 3237,
                    "name": "IfStatement",
                    "src": "9966:57:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3239
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "off",
                          "scope": 3375,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3238,
                            "name": "ElementaryTypeName",
                            "src": "10033:4:9"
                          }
                        ],
                        "id": 3239,
                        "name": "VariableDeclaration",
                        "src": "10033:8:9"
                      }
                    ],
                    "id": 3240,
                    "name": "VariableDeclarationStatement",
                    "src": "10033:8:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3242
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "otheroff",
                          "scope": 3375,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3241,
                            "name": "ElementaryTypeName",
                            "src": "10051:4:9"
                          }
                        ],
                        "id": 3242,
                        "name": "VariableDeclaration",
                        "src": "10051:13:9"
                      }
                    ],
                    "id": 3243,
                    "name": "VariableDeclarationStatement",
                    "src": "10051:13:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3245
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "prevoff",
                          "scope": 3375,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3244,
                            "name": "ElementaryTypeName",
                            "src": "10074:4:9"
                          }
                        ],
                        "id": 3245,
                        "name": "VariableDeclaration",
                        "src": "10074:12:9"
                      }
                    ],
                    "id": 3246,
                    "name": "VariableDeclarationStatement",
                    "src": "10074:12:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3248
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "otherprevoff",
                          "scope": 3375,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3247,
                            "name": "ElementaryTypeName",
                            "src": "10096:4:9"
                          }
                        ],
                        "id": 3248,
                        "name": "VariableDeclaration",
                        "src": "10096:17:9"
                      }
                    ],
                    "id": 3249,
                    "name": "VariableDeclarationStatement",
                    "src": "10096:17:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3251
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "counts",
                          "scope": 3375,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3250,
                            "name": "ElementaryTypeName",
                            "src": "10123:4:9"
                          }
                        ],
                        "id": 3251,
                        "name": "VariableDeclaration",
                        "src": "10123:11:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2404,
                              "type": "function (bytes memory,uint256) pure returns (uint256)",
                              "value": "labelCount"
                            },
                            "id": 3252,
                            "name": "Identifier",
                            "src": "10137:10:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3223,
                              "type": "bytes memory",
                              "value": "self"
                            },
                            "id": 3253,
                            "name": "Identifier",
                            "src": "10148:4:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3254,
                            "name": "Literal",
                            "src": "10154:1:9"
                          }
                        ],
                        "id": 3255,
                        "name": "FunctionCall",
                        "src": "10137:19:9"
                      }
                    ],
                    "id": 3256,
                    "name": "VariableDeclarationStatement",
                    "src": "10123:33:9"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3258
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "othercounts",
                          "scope": 3375,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 3257,
                            "name": "ElementaryTypeName",
                            "src": "10166:4:9"
                          }
                        ],
                        "id": 3258,
                        "name": "VariableDeclaration",
                        "src": "10166:16:9"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2404,
                              "type": "function (bytes memory,uint256) pure returns (uint256)",
                              "value": "labelCount"
                            },
                            "id": 3259,
                            "name": "Identifier",
                            "src": "10185:10:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3225,
                              "type": "bytes memory",
                              "value": "other"
                            },
                            "id": 3260,
                            "name": "Identifier",
                            "src": "10196:5:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3261,
                            "name": "Literal",
                            "src": "10203:1:9"
                          }
                        ],
                        "id": 3262,
                        "name": "FunctionCall",
                        "src": "10185:20:9"
                      }
                    ],
                    "id": 3263,
                    "name": "VariableDeclarationStatement",
                    "src": "10166:39:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3251,
                              "type": "uint256",
                              "value": "counts"
                            },
                            "id": 3264,
                            "name": "Identifier",
                            "src": "10316:6:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3258,
                              "type": "uint256",
                              "value": "othercounts"
                            },
                            "id": 3265,
                            "name": "Identifier",
                            "src": "10325:11:9"
                          }
                        ],
                        "id": 3266,
                        "name": "BinaryOperation",
                        "src": "10316:20:9"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3245,
                                      "type": "uint256",
                                      "value": "prevoff"
                                    },
                                    "id": 3267,
                                    "name": "Identifier",
                                    "src": "10352:7:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3239,
                                      "type": "uint256",
                                      "value": "off"
                                    },
                                    "id": 3268,
                                    "name": "Identifier",
                                    "src": "10362:3:9"
                                  }
                                ],
                                "id": 3269,
                                "name": "Assignment",
                                "src": "10352:13:9"
                              }
                            ],
                            "id": 3270,
                            "name": "ExpressionStatement",
                            "src": "10352:13:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3239,
                                      "type": "uint256",
                                      "value": "off"
                                    },
                                    "id": 3271,
                                    "name": "Identifier",
                                    "src": "10379:3:9"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3395,
                                          "type": "function (bytes memory,uint256) pure returns (uint256)",
                                          "value": "progress"
                                        },
                                        "id": 3272,
                                        "name": "Identifier",
                                        "src": "10385:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3223,
                                          "type": "bytes memory",
                                          "value": "self"
                                        },
                                        "id": 3273,
                                        "name": "Identifier",
                                        "src": "10394:4:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3239,
                                          "type": "uint256",
                                          "value": "off"
                                        },
                                        "id": 3274,
                                        "name": "Identifier",
                                        "src": "10400:3:9"
                                      }
                                    ],
                                    "id": 3275,
                                    "name": "FunctionCall",
                                    "src": "10385:19:9"
                                  }
                                ],
                                "id": 3276,
                                "name": "Assignment",
                                "src": "10379:25:9"
                              }
                            ],
                            "id": 3277,
                            "name": "ExpressionStatement",
                            "src": "10379:25:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "--",
                                  "prefix": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3251,
                                      "type": "uint256",
                                      "value": "counts"
                                    },
                                    "id": 3278,
                                    "name": "Identifier",
                                    "src": "10418:6:9"
                                  }
                                ],
                                "id": 3279,
                                "name": "UnaryOperation",
                                "src": "10418:8:9"
                              }
                            ],
                            "id": 3280,
                            "name": "ExpressionStatement",
                            "src": "10418:8:9"
                          }
                        ],
                        "id": 3281,
                        "name": "Block",
                        "src": "10338:99:9"
                      }
                    ],
                    "id": 3282,
                    "name": "WhileStatement",
                    "src": "10309:128:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3258,
                              "type": "uint256",
                              "value": "othercounts"
                            },
                            "id": 3283,
                            "name": "Identifier",
                            "src": "10454:11:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3251,
                              "type": "uint256",
                              "value": "counts"
                            },
                            "id": 3284,
                            "name": "Identifier",
                            "src": "10468:6:9"
                          }
                        ],
                        "id": 3285,
                        "name": "BinaryOperation",
                        "src": "10454:20:9"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3248,
                                      "type": "uint256",
                                      "value": "otherprevoff"
                                    },
                                    "id": 3286,
                                    "name": "Identifier",
                                    "src": "10490:12:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3242,
                                      "type": "uint256",
                                      "value": "otheroff"
                                    },
                                    "id": 3287,
                                    "name": "Identifier",
                                    "src": "10505:8:9"
                                  }
                                ],
                                "id": 3288,
                                "name": "Assignment",
                                "src": "10490:23:9"
                              }
                            ],
                            "id": 3289,
                            "name": "ExpressionStatement",
                            "src": "10490:23:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3242,
                                      "type": "uint256",
                                      "value": "otheroff"
                                    },
                                    "id": 3290,
                                    "name": "Identifier",
                                    "src": "10527:8:9"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3395,
                                          "type": "function (bytes memory,uint256) pure returns (uint256)",
                                          "value": "progress"
                                        },
                                        "id": 3291,
                                        "name": "Identifier",
                                        "src": "10538:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3225,
                                          "type": "bytes memory",
                                          "value": "other"
                                        },
                                        "id": 3292,
                                        "name": "Identifier",
                                        "src": "10547:5:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3242,
                                          "type": "uint256",
                                          "value": "otheroff"
                                        },
                                        "id": 3293,
                                        "name": "Identifier",
                                        "src": "10554:8:9"
                                      }
                                    ],
                                    "id": 3294,
                                    "name": "FunctionCall",
                                    "src": "10538:25:9"
                                  }
                                ],
                                "id": 3295,
                                "name": "Assignment",
                                "src": "10527:36:9"
                              }
                            ],
                            "id": 3296,
                            "name": "ExpressionStatement",
                            "src": "10527:36:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "--",
                                  "prefix": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3258,
                                      "type": "uint256",
                                      "value": "othercounts"
                                    },
                                    "id": 3297,
                                    "name": "Identifier",
                                    "src": "10577:11:9"
                                  }
                                ],
                                "id": 3298,
                                "name": "UnaryOperation",
                                "src": "10577:13:9"
                              }
                            ],
                            "id": 3299,
                            "name": "ExpressionStatement",
                            "src": "10577:13:9"
                          }
                        ],
                        "id": 3300,
                        "name": "Block",
                        "src": "10476:125:9"
                      }
                    ],
                    "id": 3301,
                    "name": "WhileStatement",
                    "src": "10447:154:9"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3251,
                                  "type": "uint256",
                                  "value": "counts"
                                },
                                "id": 3302,
                                "name": "Identifier",
                                "src": "10676:6:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3303,
                                "name": "Literal",
                                "src": "10685:1:9"
                              }
                            ],
                            "id": 3304,
                            "name": "BinaryOperation",
                            "src": "10676:10:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "equals",
                                      "referencedDeclaration": 1693,
                                      "type": "function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3223,
                                          "type": "bytes memory",
                                          "value": "self"
                                        },
                                        "id": 3305,
                                        "name": "Identifier",
                                        "src": "10691:4:9"
                                      }
                                    ],
                                    "id": 3306,
                                    "name": "MemberAccess",
                                    "src": "10691:11:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3239,
                                      "type": "uint256",
                                      "value": "off"
                                    },
                                    "id": 3307,
                                    "name": "Identifier",
                                    "src": "10703:3:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3225,
                                      "type": "bytes memory",
                                      "value": "other"
                                    },
                                    "id": 3308,
                                    "name": "Identifier",
                                    "src": "10708:5:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3242,
                                      "type": "uint256",
                                      "value": "otheroff"
                                    },
                                    "id": 3309,
                                    "name": "Identifier",
                                    "src": "10715:8:9"
                                  }
                                ],
                                "id": 3310,
                                "name": "FunctionCall",
                                "src": "10691:33:9"
                              }
                            ],
                            "id": 3311,
                            "name": "UnaryOperation",
                            "src": "10690:34:9"
                          }
                        ],
                        "id": 3312,
                        "name": "BinaryOperation",
                        "src": "10676:48:9"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3245,
                                      "type": "uint256",
                                      "value": "prevoff"
                                    },
                                    "id": 3313,
                                    "name": "Identifier",
                                    "src": "10740:7:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3239,
                                      "type": "uint256",
                                      "value": "off"
                                    },
                                    "id": 3314,
                                    "name": "Identifier",
                                    "src": "10750:3:9"
                                  }
                                ],
                                "id": 3315,
                                "name": "Assignment",
                                "src": "10740:13:9"
                              }
                            ],
                            "id": 3316,
                            "name": "ExpressionStatement",
                            "src": "10740:13:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3239,
                                      "type": "uint256",
                                      "value": "off"
                                    },
                                    "id": 3317,
                                    "name": "Identifier",
                                    "src": "10767:3:9"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3395,
                                          "type": "function (bytes memory,uint256) pure returns (uint256)",
                                          "value": "progress"
                                        },
                                        "id": 3318,
                                        "name": "Identifier",
                                        "src": "10773:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3223,
                                          "type": "bytes memory",
                                          "value": "self"
                                        },
                                        "id": 3319,
                                        "name": "Identifier",
                                        "src": "10782:4:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3239,
                                          "type": "uint256",
                                          "value": "off"
                                        },
                                        "id": 3320,
                                        "name": "Identifier",
                                        "src": "10788:3:9"
                                      }
                                    ],
                                    "id": 3321,
                                    "name": "FunctionCall",
                                    "src": "10773:19:9"
                                  }
                                ],
                                "id": 3322,
                                "name": "Assignment",
                                "src": "10767:25:9"
                              }
                            ],
                            "id": 3323,
                            "name": "ExpressionStatement",
                            "src": "10767:25:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3248,
                                      "type": "uint256",
                                      "value": "otherprevoff"
                                    },
                                    "id": 3324,
                                    "name": "Identifier",
                                    "src": "10806:12:9"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3242,
                                      "type": "uint256",
                                      "value": "otheroff"
                                    },
                                    "id": 3325,
                                    "name": "Identifier",
                                    "src": "10821:8:9"
                                  }
                                ],
                                "id": 3326,
                                "name": "Assignment",
                                "src": "10806:23:9"
                              }
                            ],
                            "id": 3327,
                            "name": "ExpressionStatement",
                            "src": "10806:23:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3242,
                                      "type": "uint256",
                                      "value": "otheroff"
                                    },
                                    "id": 3328,
                                    "name": "Identifier",
                                    "src": "10843:8:9"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3395,
                                          "type": "function (bytes memory,uint256) pure returns (uint256)",
                                          "value": "progress"
                                        },
                                        "id": 3329,
                                        "name": "Identifier",
                                        "src": "10854:8:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3225,
                                          "type": "bytes memory",
                                          "value": "other"
                                        },
                                        "id": 3330,
                                        "name": "Identifier",
                                        "src": "10863:5:9"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3242,
                                          "type": "uint256",
                                          "value": "otheroff"
                                        },
                                        "id": 3331,
                                        "name": "Identifier",
                                        "src": "10870:8:9"
                                      }
                                    ],
                                    "id": 3332,
                                    "name": "FunctionCall",
                                    "src": "10854:25:9"
                                  }
                                ],
                                "id": 3333,
                                "name": "Assignment",
                                "src": "10843:36:9"
                              }
                            ],
                            "id": 3334,
                            "name": "ExpressionStatement",
                            "src": "10843:36:9"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3251,
                                      "type": "uint256",
                                      "value": "counts"
                                    },
                                    "id": 3335,
                                    "name": "Identifier",
                                    "src": "10893:6:9"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 3336,
                                    "name": "Literal",
                                    "src": "10903:1:9"
                                  }
                                ],
                                "id": 3337,
                                "name": "Assignment",
                                "src": "10893:11:9"
                              }
                            ],
                            "id": 3338,
                            "name": "ExpressionStatement",
                            "src": "10893:11:9"
                          }
                        ],
                        "id": 3339,
                        "name": "Block",
                        "src": "10726:189:9"
                      }
                    ],
                    "id": 3340,
                    "name": "WhileStatement",
                    "src": "10669:246:9"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3239,
                              "type": "uint256",
                              "value": "off"
                            },
                            "id": 3341,
                            "name": "Identifier",
                            "src": "10929:3:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3342,
                            "name": "Literal",
                            "src": "10936:1:9"
                          }
                        ],
                        "id": 3343,
                        "name": "BinaryOperation",
                        "src": "10929:8:9"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3229
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int_const -1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 3344,
                                    "name": "Literal",
                                    "src": "10961:1:9"
                                  }
                                ],
                                "id": 3345,
                                "name": "UnaryOperation",
                                "src": "10960:2:9"
                              }
                            ],
                            "id": 3346,
                            "name": "Return",
                            "src": "10953:9:9"
                          }
                        ],
                        "id": 3347,
                        "name": "Block",
                        "src": "10939:34:9"
                      }
                    ],
                    "id": 3348,
                    "name": "IfStatement",
                    "src": "10925:48:9"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3242,
                              "type": "uint256",
                              "value": "otheroff"
                            },
                            "id": 3349,
                            "name": "Identifier",
                            "src": "10985:8:9"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3350,
                            "name": "Literal",
                            "src": "10997:1:9"
                          }
                        ],
                        "id": 3351,
                        "name": "BinaryOperation",
                        "src": "10985:13:9"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3229
                            },
                            "children": [
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 3352,
                                "name": "Literal",
                                "src": "11021:1:9"
                              }
                            ],
                            "id": 3353,
                            "name": "Return",
                            "src": "11014:8:9"
                          }
                        ],
                        "id": 3354,
                        "name": "Block",
                        "src": "11000:33:9"
                      }
                    ],
                    "id": 3355,
                    "name": "IfStatement",
                    "src": "10982:51:9"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3229
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "compare",
                              "referencedDeclaration": 1633,
                              "type": "function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3223,
                                  "type": "bytes memory",
                                  "value": "self"
                                },
                                "id": 3356,
                                "name": "Identifier",
                                "src": "11050:4:9"
                              }
                            ],
                            "id": 3357,
                            "name": "MemberAccess",
                            "src": "11050:12:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3245,
                                  "type": "uint256",
                                  "value": "prevoff"
                                },
                                "id": 3358,
                                "name": "Identifier",
                                "src": "11063:7:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 3359,
                                "name": "Literal",
                                "src": "11073:1:9"
                              }
                            ],
                            "id": 3360,
                            "name": "BinaryOperation",
                            "src": "11063:11:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3223,
                                      "type": "bytes memory",
                                      "value": "self"
                                    },
                                    "id": 3361,
                                    "name": "Identifier",
                                    "src": "11076:4:9"
                                  }
                                ],
                                "id": 3362,
                                "name": "MemberAccess",
                                "src": "11076:14:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3245,
                                  "type": "uint256",
                                  "value": "prevoff"
                                },
                                "id": 3363,
                                "name": "Identifier",
                                "src": "11091:7:9"
                              }
                            ],
                            "id": 3364,
                            "name": "FunctionCall",
                            "src": "11076:23:9"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3225,
                              "type": "bytes memory",
                              "value": "other"
                            },
                            "id": 3365,
                            "name": "Identifier",
                            "src": "11101:5:9"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3248,
                                  "type": "uint256",
                                  "value": "otherprevoff"
                                },
                                "id": 3366,
                                "name": "Identifier",
                                "src": "11108:12:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 3367,
                                "name": "Literal",
                                "src": "11123:1:9"
                              }
                            ],
                            "id": 3368,
                            "name": "BinaryOperation",
                            "src": "11108:16:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3225,
                                      "type": "bytes memory",
                                      "value": "other"
                                    },
                                    "id": 3369,
                                    "name": "Identifier",
                                    "src": "11126:5:9"
                                  }
                                ],
                                "id": 3370,
                                "name": "MemberAccess",
                                "src": "11126:15:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3248,
                                  "type": "uint256",
                                  "value": "otherprevoff"
                                },
                                "id": 3371,
                                "name": "Identifier",
                                "src": "11142:12:9"
                              }
                            ],
                            "id": 3372,
                            "name": "FunctionCall",
                            "src": "11126:29:9"
                          }
                        ],
                        "id": 3373,
                        "name": "FunctionCall",
                        "src": "11050:106:9"
                      }
                    ],
                    "id": 3374,
                    "name": "Return",
                    "src": "11043:113:9"
                  }
                ],
                "id": 3375,
                "name": "Block",
                "src": "9956:1207:9"
              }
            ],
            "id": 3376,
            "name": "FunctionDefinition",
            "src": "9867:1296:9"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "progress",
              "scope": 3396,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "body",
                      "scope": 3395,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3377,
                        "name": "ElementaryTypeName",
                        "src": "11187:5:9"
                      }
                    ],
                    "id": 3378,
                    "name": "VariableDeclaration",
                    "src": "11187:17:9"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "off",
                      "scope": 3395,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3379,
                        "name": "ElementaryTypeName",
                        "src": "11206:4:9"
                      }
                    ],
                    "id": 3380,
                    "name": "VariableDeclaration",
                    "src": "11206:8:9"
                  }
                ],
                "id": 3381,
                "name": "ParameterList",
                "src": "11186:29:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3395,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3382,
                        "name": "ElementaryTypeName",
                        "src": "11238:4:9"
                      }
                    ],
                    "id": 3383,
                    "name": "VariableDeclaration",
                    "src": "11238:4:9"
                  }
                ],
                "id": 3384,
                "name": "ParameterList",
                "src": "11237:6:9"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3384
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3380,
                                  "type": "uint256",
                                  "value": "off"
                                },
                                "id": 3385,
                                "name": "Identifier",
                                "src": "11261:3:9"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 3386,
                                "name": "Literal",
                                "src": "11267:1:9"
                              }
                            ],
                            "id": 3387,
                            "name": "BinaryOperation",
                            "src": "11261:7:9"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "readUint8",
                                  "referencedDeclaration": 1764,
                                  "type": "function (bytes memory,uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3378,
                                      "type": "bytes memory",
                                      "value": "body"
                                    },
                                    "id": 3388,
                                    "name": "Identifier",
                                    "src": "11271:4:9"
                                  }
                                ],
                                "id": 3389,
                                "name": "MemberAccess",
                                "src": "11271:14:9"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3380,
                                  "type": "uint256",
                                  "value": "off"
                                },
                                "id": 3390,
                                "name": "Identifier",
                                "src": "11286:3:9"
                              }
                            ],
                            "id": 3391,
                            "name": "FunctionCall",
                            "src": "11271:19:9"
                          }
                        ],
                        "id": 3392,
                        "name": "BinaryOperation",
                        "src": "11261:29:9"
                      }
                    ],
                    "id": 3393,
                    "name": "Return",
                    "src": "11254:36:9"
                  }
                ],
                "id": 3394,
                "name": "Block",
                "src": "11244:53:9"
              }
            ],
            "id": 3395,
            "name": "FunctionDefinition",
            "src": "11169:128:9"
          }
        ],
        "id": 3396,
        "name": "ContractDefinition",
        "src": "196:11103:9"
      }
    ],
    "id": 3397,
    "name": "SourceUnit",
    "src": "0:11300:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.4+commit.3f05b770.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.3",
  "updatedAt": "2021-01-21T03:26:26.171Z",
  "devdoc": {
    "details": "RRUtils is a library that provides utilities for parsing DNS resource records.",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}