{
  "contractName": "Slices",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/Slices.sol\":\"Slices\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/Slices.sol\":{\"keccak256\":\"0x9d046fa558be922c9625a1fdc470f6e68b3c9b5745b6185cb4a4fc59181fa006\",\"license\":\"APACHE-2.0\",\"urls\":[\"bzz-raw://ab19ba09faf83aaa92947f0a0907f6522be89279a9a1b0e53d5393a23085947d\",\"dweb:/ipfs/QmeE9MwhpSFNTwyqDFpMFjftrJKR1edBhLjV3bdKQQHUVm\"]}},\"version\":1}",
  "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e85e88c86e1c9b8b697071d6e099194e3cd5a2f59fe14433ac367a0d54009fe364736f6c634300081e0033",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e85e88c86e1c9b8b697071d6e099194e3cd5a2f59fe14433ac367a0d54009fe364736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "2090:24418:113:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;2090:24418:113;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "2090:24418:113:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: APACHE-2.0\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\n/*\r\n * @title String & Slice utility library for Solidity contracts.\r\n * @author Nick Johnson <arachnid@notdot.net>\r\n *\r\n * @dev Functionality in this library is largely implemented using an\r\n *      abstraction called a 'Slice'. A Slice represents a part of a string -\r\n *      anything from the entire string to a single character, or even no\r\n *      characters at all (a 0-length Slice). Since a Slice only has to specify\r\n *      an offset and a length, copying and manipulating slices is a lot less\r\n *      expensive than copying and manipulating the strings they reference.\r\n *\r\n *      To further reduce gas costs, most functions on Slice that need to return\r\n *      a Slice modify the original one instead of allocating a new one; for\r\n *      instance, `s.split(\".\")` will return the text up to the first '.',\r\n *      modifying s to only contain the remainder of the string after the '.'.\r\n *      In situations where you do not want to modify the original Slice, you\r\n *      can make a copy first with `.copy()`, for example:\r\n *      `s.copy().split(\".\")`. Try and avoid using this idiom in loops; since\r\n *      Solidity has no memory management, it will result in allocating many\r\n *      short-lived slices that are later discarded.\r\n *\r\n *      Functions that return two slices come in two versions: a non-allocating\r\n *      version that takes the second Slice as an argument, modifying it in\r\n *      place, and an allocating version that allocates and returns the second\r\n *      Slice; see `nextRune` for example.\r\n *\r\n *      Functions that have to copy string data will return strings rather than\r\n *      slices; these can be cast back to slices for further processing if\r\n *      required.\r\n *\r\n *      For convenience, some functions are provided with non-modifying\r\n *      variants that create a new Slice and return both; for instance,\r\n *      `s.splitNew('.')` leaves s unmodified, and returns two values\r\n *      corresponding to the left and right parts of the string.\r\n */\r\n\r\nlibrary Slices {\r\n    \r\n    struct Slice {\r\n        uint _len;\r\n        uint _ptr;\r\n    }\r\n\r\n    function _memcpy(uint _dest, uint _src, uint _len) private pure {\r\n        // Copy word-length chunks while possible\r\n        for(; _len >= 32; _len -= 32) {\r\n            assembly {\r\n                mstore(_dest, mload(_src))\r\n            }\r\n            _dest += 32;\r\n            _src += 32;\r\n        }\r\n\r\n        // Copy remaining bytes\r\n        uint _mask = type(uint).max;\r\n        if (_len > 0) {\r\n            _mask = 256 ** (32 - _len) - 1;\r\n        }\r\n        assembly {\r\n            let srcpart := and(mload(_src), not(_mask))\r\n            let destpart := and(mload(_dest), _mask)\r\n            mstore(_dest, or(destpart, srcpart))\r\n        }\r\n    }\r\n\r\n    /*\r\n     * @dev Returns a Slice containing the entire string.\r\n     * @param self The string to make a Slice from.\r\n     * @return A newly allocated Slice containing the entire string.\r\n     */\r\n    function toSlice(string memory self) internal pure returns (Slice memory) {\r\n        uint ptr;\r\n        assembly {\r\n            ptr := add(self, 0x20)\r\n        }\r\n        return Slice(bytes(self).length, ptr);\r\n    }\r\n\r\n    /*\r\n     * @dev Returns the length of a null-terminated bytes32 string.\r\n     * @param self The value to find the length of.\r\n     * @return The length of the string, from 0 to 32.\r\n     */\r\n    function len(bytes32 self) internal pure returns (uint) {\r\n        uint ret;\r\n        if (self == 0)\r\n            return 0;\r\n        if (uint(self) & type(uint128).max == 0) {\r\n            ret += 16;\r\n            self = bytes32(uint(self) / 0x100000000000000000000000000000000);\r\n        }\r\n        if (uint(self) & type(uint64).max == 0) {\r\n            ret += 8;\r\n            self = bytes32(uint(self) / 0x10000000000000000);\r\n        }\r\n        if (uint(self) & type(uint32).max == 0) {\r\n            ret += 4;\r\n            self = bytes32(uint(self) / 0x100000000);\r\n        }\r\n        if (uint(self) & type(uint16).max == 0) {\r\n            ret += 2;\r\n            self = bytes32(uint(self) / 0x10000);\r\n        }\r\n        if (uint(self) & type(uint8).max == 0) {\r\n            ret += 1;\r\n        }\r\n        return 32 - ret;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns a Slice containing the entire bytes32, interpreted as a\r\n     *      null-terminated utf-8 string.\r\n     * @param self The bytes32 value to convert to a Slice.\r\n     * @return A new Slice containing the value of the input argument up to the\r\n     *         first null.\r\n     */\r\n    function toSliceB32(bytes32 self) internal pure returns (Slice memory ret) {\r\n        // Allocate space for `self` in memory, copy it there, and point ret at it\r\n        assembly {\r\n            let ptr := mload(0x40)\r\n            mstore(0x40, add(ptr, 0x20))\r\n            mstore(ptr, self)\r\n            mstore(add(ret, 0x20), ptr)\r\n        }\r\n        ret._len = len(self);\r\n    }\r\n\r\n    /*\r\n     * @dev Returns a new Slice containing the same data as the current Slice.\r\n     * @param self The Slice to copy.\r\n     * @return A new Slice containing the same data as `self`.\r\n     */\r\n    function copy(Slice memory self) internal pure returns (Slice memory) {\r\n        return Slice(self._len, self._ptr);\r\n    }\r\n\r\n    /*\r\n     * @dev Copies a Slice to a new string.\r\n     * @param self The Slice to copy.\r\n     * @return A newly allocated string containing the Slice's text.\r\n     */\r\n    function toString(Slice memory self) internal pure returns (string memory) {\r\n        string memory ret = new string(self._len);\r\n        uint retptr;\r\n        assembly { retptr := add(ret, 32) }\r\n\r\n        _memcpy(retptr, self._ptr, self._len);\r\n        return ret;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns the length in runes of the Slice. Note that this operation\r\n     *      takes time proportional to the length of the Slice; avoid using it\r\n     *      in loops, and call `Slice.empty()` if you only need to know whether\r\n     *      the Slice is empty or not.\r\n     * @param self The Slice to operate on.\r\n     * @return The length of the Slice in runes.\r\n     */\r\n    function len(Slice memory self) internal pure returns (uint _l) {\r\n        // Starting at ptr-31 means the LSB will be the byte we care about\r\n        uint ptr = self._ptr - 31;\r\n        uint end = ptr + self._len;\r\n        for (_l = 0; ptr < end; _l++) {\r\n            uint8 b;\r\n            assembly { b := and(mload(ptr), 0xFF) }\r\n            if (b < 0x80) {\r\n                ptr += 1;\r\n            } else if(b < 0xE0) {\r\n                ptr += 2;\r\n            } else if(b < 0xF0) {\r\n                ptr += 3;\r\n            } else if(b < 0xF8) {\r\n                ptr += 4;\r\n            } else if(b < 0xFC) {\r\n                ptr += 5;\r\n            } else {\r\n                ptr += 6;\r\n            }\r\n        }\r\n    }\r\n\r\n    /*\r\n     * @dev Returns true if the Slice is empty (has a length of 0).\r\n     * @param self The Slice to operate on.\r\n     * @return True if the Slice is empty, False otherwise.\r\n     */\r\n    function empty(Slice memory self) internal pure returns (bool) {\r\n        return self._len == 0;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns a positive number if `other` comes lexicographically after\r\n     *      `self`, a negative number if it comes before, or zero if the\r\n     *      contents of the two slices are equal. Comparison is done per-rune,\r\n     *      on unicode codepoints.\r\n     * @param self The first Slice to compare.\r\n     * @param other The second Slice to compare.\r\n     * @return The result of the comparison.\r\n     */\r\n    function compare(Slice memory self, Slice memory other) internal pure returns (int) {\r\n        uint shortest = self._len;\r\n        if (other._len < self._len)\r\n            shortest = other._len;\r\n\r\n        uint selfptr = self._ptr;\r\n        uint otherptr = other._ptr;\r\n        for (uint idx = 0; idx < shortest; idx += 32) {\r\n            uint a;\r\n            uint b;\r\n            assembly {\r\n                a := mload(selfptr)\r\n                b := mload(otherptr)\r\n            }\r\n            if (a != b) {\r\n                // Mask out irrelevant bytes and check again\r\n                uint mask = type(uint).max; // 0xffff...\r\n                if(shortest < 32) {\r\n                  mask = ~(2 ** (8 * (32 - shortest + idx)) - 1);\r\n                }\r\n                unchecked {\r\n                    uint diff = (a & mask) - (b & mask);\r\n                    if (diff != 0)\r\n                        return int(diff);\r\n                }\r\n            }\r\n            selfptr += 32;\r\n            otherptr += 32;\r\n        }\r\n        return int(self._len) - int(other._len);\r\n    }\r\n\r\n    /*\r\n     * @dev Returns true if the two slices contain the same text.\r\n     * @param self The first Slice to compare.\r\n     * @param self The second Slice to compare.\r\n     * @return True if the slices are equal, false otherwise.\r\n     */\r\n    function equals(Slice memory self, Slice memory other) internal pure returns (bool) {\r\n        return compare(self, other) == 0;\r\n    }\r\n\r\n    /*\r\n     * @dev Extracts the first rune in the Slice into `rune`, advancing the\r\n     *      Slice to point to the next rune and returning `self`.\r\n     * @param self The Slice to operate on.\r\n     * @param rune The Slice that will contain the first rune.\r\n     * @return `rune`.\r\n     */\r\n    function nextRune(Slice memory self, Slice memory rune) internal pure returns (Slice memory) {\r\n        rune._ptr = self._ptr;\r\n\r\n        if (self._len == 0) {\r\n            rune._len = 0;\r\n            return rune;\r\n        }\r\n\r\n        uint _l;\r\n        uint _b;\r\n        // Load the first byte of the rune into the LSBs of _b\r\n        assembly { _b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF) }\r\n        if (_b < 0x80) {\r\n            _l = 1;\r\n        } else if(_b < 0xE0) {\r\n            _l = 2;\r\n        } else if(_b < 0xF0) {\r\n            _l = 3;\r\n        } else {\r\n            _l = 4;\r\n        }\r\n\r\n        // Check for truncated codepoints\r\n        if (_l > self._len) {\r\n            rune._len = self._len;\r\n            self._ptr += self._len;\r\n            self._len = 0;\r\n            return rune;\r\n        }\r\n\r\n        self._ptr += _l;\r\n        self._len -= _l;\r\n        rune._len = _l;\r\n        return rune;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns the first rune in the Slice, advancing the Slice to point\r\n     *      to the next rune.\r\n     * @param self The Slice to operate on.\r\n     * @return A Slice containing only the first rune from `self`.\r\n     */\r\n    function nextRune(Slice memory self) internal pure returns (Slice memory ret) {\r\n        nextRune(self, ret);\r\n    }\r\n\r\n    /*\r\n     * @dev Returns the number of the first codepoint in the Slice.\r\n     * @param self The Slice to operate on.\r\n     * @return The number of the first codepoint in the Slice.\r\n     */\r\n    function ord(Slice memory self) internal pure returns (uint ret) {\r\n        if (self._len == 0) {\r\n            return 0;\r\n        }\r\n\r\n        uint word;\r\n        uint length;\r\n        uint divisor = 2 ** 248;\r\n\r\n        // Load the rune into the MSBs of b\r\n        assembly { word:= mload(mload(add(self, 32))) }\r\n        uint b = word / divisor;\r\n        if (b < 0x80) {\r\n            ret = b;\r\n            length = 1;\r\n        } else if(b < 0xE0) {\r\n            ret = b & 0x1F;\r\n            length = 2;\r\n        } else if(b < 0xF0) {\r\n            ret = b & 0x0F;\r\n            length = 3;\r\n        } else {\r\n            ret = b & 0x07;\r\n            length = 4;\r\n        }\r\n\r\n        // Check for truncated codepoints\r\n        if (length > self._len) {\r\n            return 0;\r\n        }\r\n\r\n        for (uint i = 1; i < length; i++) {\r\n            divisor = divisor / 256;\r\n            b = (word / divisor) & 0xFF;\r\n            if (b & 0xC0 != 0x80) {\r\n                // Invalid UTF-8 sequence\r\n                return 0;\r\n            }\r\n            ret = (ret * 64) | (b & 0x3F);\r\n        }\r\n\r\n        return ret;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns the keccak-256 hash of the Slice.\r\n     * @param self The Slice to hash.\r\n     * @return The hash of the Slice.\r\n     */\r\n    function keccak(Slice memory self) internal pure returns (bytes32 ret) {\r\n        assembly {\r\n            ret := keccak256(mload(add(self, 32)), mload(self))\r\n        }\r\n    }\r\n\r\n    /*\r\n     * @dev Returns true if `self` starts with `needle`.\r\n     * @param self The Slice to operate on.\r\n     * @param needle The Slice to search for.\r\n     * @return True if the Slice starts with the provided text, false otherwise.\r\n     */\r\n    function startsWith(Slice memory self, Slice memory needle) internal pure returns (bool) {\r\n        if (self._len < needle._len) {\r\n            return false;\r\n        }\r\n\r\n        if (self._ptr == needle._ptr) {\r\n            return true;\r\n        }\r\n\r\n        bool equal;\r\n        assembly {\r\n            let length := mload(needle)\r\n            let selfptr := mload(add(self, 0x20))\r\n            let needleptr := mload(add(needle, 0x20))\r\n            equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\r\n        }\r\n        return equal;\r\n    }\r\n\r\n    /*\r\n     * @dev If `self` starts with `needle`, `needle` is removed from the\r\n     *      beginning of `self`. Otherwise, `self` is unmodified.\r\n     * @param self The Slice to operate on.\r\n     * @param needle The Slice to search for.\r\n     * @return `self`\r\n     */\r\n    function beyond(Slice memory self, Slice memory needle) internal pure returns (Slice memory) {\r\n        if (self._len < needle._len) {\r\n            return self;\r\n        }\r\n\r\n        bool equal = true;\r\n        if (self._ptr != needle._ptr) {\r\n            assembly {\r\n                let length := mload(needle)\r\n                let selfptr := mload(add(self, 0x20))\r\n                let needleptr := mload(add(needle, 0x20))\r\n                equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\r\n            }\r\n        }\r\n\r\n        if (equal) {\r\n            self._len -= needle._len;\r\n            self._ptr += needle._len;\r\n        }\r\n\r\n        return self;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns true if the Slice ends with `needle`.\r\n     * @param self The Slice to operate on.\r\n     * @param needle The Slice to search for.\r\n     * @return True if the Slice starts with the provided text, false otherwise.\r\n     */\r\n    function endsWith(Slice memory self, Slice memory needle) internal pure returns (bool) {\r\n        if (self._len < needle._len) {\r\n            return false;\r\n        }\r\n\r\n        uint selfptr = self._ptr + self._len - needle._len;\r\n\r\n        if (selfptr == needle._ptr) {\r\n            return true;\r\n        }\r\n\r\n        bool equal;\r\n        assembly {\r\n            let length := mload(needle)\r\n            let needleptr := mload(add(needle, 0x20))\r\n            equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\r\n        }\r\n\r\n        return equal;\r\n    }\r\n\r\n    /*\r\n     * @dev If `self` ends with `needle`, `needle` is removed from the\r\n     *      end of `self`. Otherwise, `self` is unmodified.\r\n     * @param self The Slice to operate on.\r\n     * @param needle The Slice to search for.\r\n     * @return `self`\r\n     */\r\n    function until(Slice memory self, Slice memory needle) internal pure returns (Slice memory) {\r\n        if (self._len < needle._len) {\r\n            return self;\r\n        }\r\n\r\n        uint selfptr = self._ptr + self._len - needle._len;\r\n        bool equal = true;\r\n        if (selfptr != needle._ptr) {\r\n            assembly {\r\n                let length := mload(needle)\r\n                let needleptr := mload(add(needle, 0x20))\r\n                equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\r\n            }\r\n        }\r\n\r\n        if (equal) {\r\n            self._len -= needle._len;\r\n        }\r\n\r\n        return self;\r\n    }\r\n\r\n    // Returns the memory address of the first byte of the first occurrence of\r\n    // `needle` in `self`, or the first byte after `self` if not found.\r\n    function findPtr(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) {\r\n        uint ptr = selfptr;\r\n        uint idx;\r\n\r\n        if (needlelen <= selflen) {\r\n            if (needlelen <= 32) {\r\n                bytes32 mask;\r\n                if (needlelen > 0) {\r\n                    mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1));\r\n                }\r\n\r\n                bytes32 needledata;\r\n                assembly { needledata := and(mload(needleptr), mask) }\r\n\r\n                uint end = selfptr + selflen - needlelen;\r\n                bytes32 ptrdata;\r\n                assembly { ptrdata := and(mload(ptr), mask) }\r\n\r\n                while (ptrdata != needledata) {\r\n                    if (ptr >= end)\r\n                        return selfptr + selflen;\r\n                    ptr++;\r\n                    assembly { ptrdata := and(mload(ptr), mask) }\r\n                }\r\n                return ptr;\r\n            } else {\r\n                // For long needles, use hashing\r\n                bytes32 hash;\r\n                assembly { hash := keccak256(needleptr, needlelen) }\r\n\r\n                for (idx = 0; idx <= selflen - needlelen; idx++) {\r\n                    bytes32 testHash;\r\n                    assembly { testHash := keccak256(ptr, needlelen) }\r\n                    if (hash == testHash)\r\n                        return ptr;\r\n                    ptr += 1;\r\n                }\r\n            }\r\n        }\r\n        return selfptr + selflen;\r\n    }\r\n\r\n    // Returns the memory address of the first byte after the last occurrence of\r\n    // `needle` in `self`, or the address of `self` if not found.\r\n    function rfindPtr(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) {\r\n        uint ptr;\r\n\r\n        if (needlelen <= selflen) {\r\n            if (needlelen <= 32) {\r\n                bytes32 mask;\r\n                if (needlelen > 0) {\r\n                    mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1));\r\n                }\r\n\r\n                bytes32 needledata;\r\n                assembly { needledata := and(mload(needleptr), mask) }\r\n\r\n                ptr = selfptr + selflen - needlelen;\r\n                bytes32 ptrdata;\r\n                assembly { ptrdata := and(mload(ptr), mask) }\r\n\r\n                while (ptrdata != needledata) {\r\n                    if (ptr <= selfptr)\r\n                        return selfptr;\r\n                    ptr--;\r\n                    assembly { ptrdata := and(mload(ptr), mask) }\r\n                }\r\n                return ptr + needlelen;\r\n            } else {\r\n                // For long needles, use hashing\r\n                bytes32 hash;\r\n                assembly { hash := keccak256(needleptr, needlelen) }\r\n                ptr = selfptr + (selflen - needlelen);\r\n                while (ptr >= selfptr) {\r\n                    bytes32 testHash;\r\n                    assembly { testHash := keccak256(ptr, needlelen) }\r\n                    if (hash == testHash)\r\n                        return ptr + needlelen;\r\n                    ptr -= 1;\r\n                }\r\n            }\r\n        }\r\n        return selfptr;\r\n    }\r\n\r\n    /*\r\n     * @dev Modifies `self` to contain everything from the first occurrence of\r\n     *      `needle` to the end of the Slice. `self` is set to the empty Slice\r\n     *      if `needle` is not found.\r\n     * @param self The Slice to search and modify.\r\n     * @param needle The text to search for.\r\n     * @return `self`.\r\n     */\r\n    function find(Slice memory self, Slice memory needle) internal pure returns (Slice memory) {\r\n        uint ptr = findPtr(self._len, self._ptr, needle._len, needle._ptr);\r\n        self._len -= ptr - self._ptr;\r\n        self._ptr = ptr;\r\n        return self;\r\n    }\r\n\r\n    /*\r\n     * @dev Modifies `self` to contain the part of the string from the start of\r\n     *      `self` to the end of the first occurrence of `needle`. If `needle`\r\n     *      is not found, `self` is set to the empty Slice.\r\n     * @param self The Slice to search and modify.\r\n     * @param needle The text to search for.\r\n     * @return `self`.\r\n     */\r\n    function rfind(Slice memory self, Slice memory needle) internal pure returns (Slice memory) {\r\n        uint ptr = rfindPtr(self._len, self._ptr, needle._len, needle._ptr);\r\n        self._len = ptr - self._ptr;\r\n        return self;\r\n    }\r\n\r\n    /*\r\n     * @dev Splits the Slice, setting `self` to everything after the first\r\n     *      occurrence of `needle`, and `token` to everything before it. If\r\n     *      `needle` does not occur in `self`, `self` is set to the empty Slice,\r\n     *      and `token` is set to the entirety of `self`.\r\n     * @param self The Slice to split.\r\n     * @param needle The text to search for in `self`.\r\n     * @param token An output parameter to which the first token is written.\r\n     * @return `token`.\r\n     */\r\n    function split(Slice memory self, Slice memory needle, Slice memory token) internal pure returns (Slice memory) {\r\n        uint ptr = findPtr(self._len, self._ptr, needle._len, needle._ptr);\r\n        token._ptr = self._ptr;\r\n        token._len = ptr - self._ptr;\r\n        if (ptr == self._ptr + self._len) {\r\n            // Not found\r\n            self._len = 0;\r\n        } else {\r\n            self._len -= token._len + needle._len;\r\n            self._ptr = ptr + needle._len;\r\n        }\r\n        return token;\r\n    }\r\n\r\n    /*\r\n     * @dev Splits the Slice, setting `self` to everything after the first\r\n     *      occurrence of `needle`, and returning everything before it. If\r\n     *      `needle` does not occur in `self`, `self` is set to the empty Slice,\r\n     *      and the entirety of `self` is returned.\r\n     * @param self The Slice to split.\r\n     * @param needle The text to search for in `self`.\r\n     * @return The part of `self` up to the first occurrence of `delim`.\r\n     */\r\n    function split(Slice memory self, Slice memory needle) internal pure returns (Slice memory token) {\r\n        split(self, needle, token);\r\n    }\r\n\r\n    /*\r\n     * @dev Splits the Slice, setting `self` to everything before the last\r\n     *      occurrence of `needle`, and `token` to everything after it. If\r\n     *      `needle` does not occur in `self`, `self` is set to the empty Slice,\r\n     *      and `token` is set to the entirety of `self`.\r\n     * @param self The Slice to split.\r\n     * @param needle The text to search for in `self`.\r\n     * @param token An output parameter to which the first token is written.\r\n     * @return `token`.\r\n     */\r\n    function rsplit(Slice memory self, Slice memory needle, Slice memory token) internal pure returns (Slice memory) {\r\n        uint ptr = rfindPtr(self._len, self._ptr, needle._len, needle._ptr);\r\n        token._ptr = ptr;\r\n        token._len = self._len - (ptr - self._ptr);\r\n        if (ptr == self._ptr) {\r\n            // Not found\r\n            self._len = 0;\r\n        } else {\r\n            self._len -= token._len + needle._len;\r\n        }\r\n        return token;\r\n    }\r\n\r\n    /*\r\n     * @dev Splits the Slice, setting `self` to everything before the last\r\n     *      occurrence of `needle`, and returning everything after it. If\r\n     *      `needle` does not occur in `self`, `self` is set to the empty Slice,\r\n     *      and the entirety of `self` is returned.\r\n     * @param self The Slice to split.\r\n     * @param needle The text to search for in `self`.\r\n     * @return The part of `self` after the last occurrence of `delim`.\r\n     */\r\n    function rsplit(Slice memory self, Slice memory needle) internal pure returns (Slice memory token) {\r\n        rsplit(self, needle, token);\r\n    }\r\n\r\n    /*\r\n     * @dev Counts the number of nonoverlapping occurrences of `needle` in `self`.\r\n     * @param self The Slice to search.\r\n     * @param needle The text to search for in `self`.\r\n     * @return The number of occurrences of `needle` found in `self`.\r\n     */\r\n    function count(Slice memory self, Slice memory needle) internal pure returns (uint cnt) {\r\n        uint ptr = findPtr(self._len, self._ptr, needle._len, needle._ptr) + needle._len;\r\n        while (ptr <= self._ptr + self._len) {\r\n            cnt++;\r\n            ptr = findPtr(self._len - (ptr - self._ptr), ptr, needle._len, needle._ptr) + needle._len;\r\n        }\r\n    }\r\n\r\n    /*\r\n     * @dev Returns True if `self` contains `needle`.\r\n     * @param self The Slice to search.\r\n     * @param needle The text to search for in `self`.\r\n     * @return True if `needle` is found in `self`, false otherwise.\r\n     */\r\n    function contains(Slice memory self, Slice memory needle) internal pure returns (bool) {\r\n        return rfindPtr(self._len, self._ptr, needle._len, needle._ptr) != self._ptr;\r\n    }\r\n\r\n    /*\r\n     * @dev Returns a newly allocated string containing the concatenation of\r\n     *      `self` and `other`.\r\n     * @param self The first Slice to concatenate.\r\n     * @param other The second Slice to concatenate.\r\n     * @return The concatenation of the two strings.\r\n     */\r\n    function concat(Slice memory self, Slice memory other) internal pure returns (string memory) {\r\n        string memory ret = new string(self._len + other._len);\r\n        uint retptr;\r\n        assembly { retptr := add(ret, 32) }\r\n        _memcpy(retptr, self._ptr, self._len);\r\n        _memcpy(retptr + self._len, other._ptr, other._len);\r\n        return ret;\r\n    }\r\n\r\n    /*\r\n     * @dev Joins an array of slices, using `self` as a delimiter, returning a\r\n     *      newly allocated string.\r\n     * @param self The delimiter to use.\r\n     * @param parts A list of slices to join.\r\n     * @return A newly allocated string containing all the slices in `parts`,\r\n     *         joined with `self`.\r\n     */\r\n    function join(Slice memory self, Slice[] memory parts) internal pure returns (string memory) {\r\n        if (parts.length == 0)\r\n            return \"\";\r\n\r\n        uint length = self._len * (parts.length - 1);\r\n        for(uint i = 0; i < parts.length; i++)\r\n            length += parts[i]._len;\r\n\r\n        string memory ret = new string(length);\r\n        uint retptr;\r\n        assembly { retptr := add(ret, 32) }\r\n\r\n        for(uint i = 0; i < parts.length; i++) {\r\n            _memcpy(retptr, parts[i]._ptr, parts[i]._len);\r\n            retptr += parts[i]._len;\r\n            if (i < parts.length - 1) {\r\n                _memcpy(retptr, self._ptr, self._len);\r\n                retptr += self._len;\r\n            }\r\n        }\r\n\r\n        return ret;\r\n    }\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\libs\\Slices.sol",
  "ast": {
    "absolutePath": "project:/contracts/libs/Slices.sol",
    "exportedSymbols": {
      "Slices": [
        34366
      ]
    },
    "id": 34367,
    "license": "APACHE-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 32537,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "42:31:113"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Slices",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 34366,
        "linearizedBaseContracts": [
          34366
        ],
        "name": "Slices",
        "nameLocation": "2098:6:113",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "Slices.Slice",
            "id": 32542,
            "members": [
              {
                "constant": false,
                "id": 32539,
                "mutability": "mutable",
                "name": "_len",
                "nameLocation": "2147:4:113",
                "nodeType": "VariableDeclaration",
                "scope": 32542,
                "src": "2142:9:113",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 32538,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "2142:4:113",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 32541,
                "mutability": "mutable",
                "name": "_ptr",
                "nameLocation": "2167:4:113",
                "nodeType": "VariableDeclaration",
                "scope": 32542,
                "src": "2162:9:113",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 32540,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "2162:4:113",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Slice",
            "nameLocation": "2125:5:113",
            "nodeType": "StructDefinition",
            "scope": 34366,
            "src": "2118:61:113",
            "visibility": "public"
          },
          {
            "body": {
              "id": 32594,
              "nodeType": "Block",
              "src": "2251:591:113",
              "statements": [
                {
                  "body": {
                    "id": 32567,
                    "nodeType": "Block",
                    "src": "2343:146:113",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "2367:60:113",
                          "nodeType": "YulBlock",
                          "src": "2367:60:113",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_dest",
                                    "nativeSrc": "2393:5:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "2393:5:113"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_src",
                                        "nativeSrc": "2406:4:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "2406:4:113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "2400:5:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "2400:5:113"
                                    },
                                    "nativeSrc": "2400:11:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2400:11:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "2386:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "2386:6:113"
                                },
                                "nativeSrc": "2386:26:113",
                                "nodeType": "YulFunctionCall",
                                "src": "2386:26:113"
                              },
                              "nativeSrc": "2386:26:113",
                              "nodeType": "YulExpressionStatement",
                              "src": "2386:26:113"
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 32544,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2393:5:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 32546,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2406:4:113",
                            "valueSize": 1
                          }
                        ],
                        "id": 32558,
                        "nodeType": "InlineAssembly",
                        "src": "2358:69:113"
                      },
                      {
                        "expression": {
                          "id": 32561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32559,
                            "name": "_dest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32544,
                            "src": "2441:5:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 32560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2450:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "2441:11:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32562,
                        "nodeType": "ExpressionStatement",
                        "src": "2441:11:113"
                      },
                      {
                        "expression": {
                          "id": 32565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32563,
                            "name": "_src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32546,
                            "src": "2467:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 32564,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2475:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "2467:10:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32566,
                        "nodeType": "ExpressionStatement",
                        "src": "2467:10:113"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 32551,
                      "name": "_len",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32548,
                      "src": "2319:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "3332",
                      "id": 32552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2327:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "2319:10:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32568,
                  "isSimpleCounterLoop": false,
                  "loopExpression": {
                    "expression": {
                      "id": 32556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 32554,
                        "name": "_len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32548,
                        "src": "2331:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "-=",
                      "rightHandSide": {
                        "hexValue": "3332",
                        "id": 32555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2339:2:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "2331:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32557,
                    "nodeType": "ExpressionStatement",
                    "src": "2331:10:113"
                  },
                  "nodeType": "ForStatement",
                  "src": "2313:176:113"
                },
                {
                  "assignments": [
                    32570
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32570,
                      "mutability": "mutable",
                      "name": "_mask",
                      "nameLocation": "2539:5:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32594,
                      "src": "2534:10:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32569,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2534:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32576,
                  "initialValue": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 32573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2552:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 32572,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2552:4:113",
                            "typeDescriptions": {}
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          }
                        ],
                        "id": 32571,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967269,
                        "src": "2547:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 32574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2547:10:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_uint256",
                        "typeString": "type(uint256)"
                      }
                    },
                    "id": 32575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "2558:3:113",
                    "memberName": "max",
                    "nodeType": "MemberAccess",
                    "src": "2547:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2534:27:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 32577,
                      "name": "_len",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32548,
                      "src": "2576:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2583:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2576:8:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32592,
                  "nodeType": "IfStatement",
                  "src": "2572:71:113",
                  "trueBody": {
                    "id": 32591,
                    "nodeType": "Block",
                    "src": "2586:57:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 32589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32580,
                            "name": "_mask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32570,
                            "src": "2601:5:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 32588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 32586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "323536",
                                "id": 32581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2609:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_256_by_1",
                                  "typeString": "int_const 256"
                                },
                                "value": "256"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 32584,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "3332",
                                      "id": 32582,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2617:2:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 32583,
                                      "name": "_len",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32548,
                                      "src": "2622:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2617:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 32585,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2616:11:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2609:18:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 32587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2630:1:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2609:22:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2601:30:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32590,
                        "nodeType": "ExpressionStatement",
                        "src": "2601:30:113"
                      }
                    ]
                  }
                },
                {
                  "AST": {
                    "nativeSrc": "2662:173:113",
                    "nodeType": "YulBlock",
                    "src": "2662:173:113",
                    "statements": [
                      {
                        "nativeSrc": "2677:43:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "2677:43:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_src",
                                  "nativeSrc": "2702:4:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "2702:4:113"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "2696:5:113",
                                "nodeType": "YulIdentifier",
                                "src": "2696:5:113"
                              },
                              "nativeSrc": "2696:11:113",
                              "nodeType": "YulFunctionCall",
                              "src": "2696:11:113"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "_mask",
                                  "nativeSrc": "2713:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "2713:5:113"
                                }
                              ],
                              "functionName": {
                                "name": "not",
                                "nativeSrc": "2709:3:113",
                                "nodeType": "YulIdentifier",
                                "src": "2709:3:113"
                              },
                              "nativeSrc": "2709:10:113",
                              "nodeType": "YulFunctionCall",
                              "src": "2709:10:113"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "2692:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "2692:3:113"
                          },
                          "nativeSrc": "2692:28:113",
                          "nodeType": "YulFunctionCall",
                          "src": "2692:28:113"
                        },
                        "variables": [
                          {
                            "name": "srcpart",
                            "nativeSrc": "2681:7:113",
                            "nodeType": "YulTypedName",
                            "src": "2681:7:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "2734:40:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "2734:40:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_dest",
                                  "nativeSrc": "2760:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "2760:5:113"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "2754:5:113",
                                "nodeType": "YulIdentifier",
                                "src": "2754:5:113"
                              },
                              "nativeSrc": "2754:12:113",
                              "nodeType": "YulFunctionCall",
                              "src": "2754:12:113"
                            },
                            {
                              "name": "_mask",
                              "nativeSrc": "2768:5:113",
                              "nodeType": "YulIdentifier",
                              "src": "2768:5:113"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "2750:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "2750:3:113"
                          },
                          "nativeSrc": "2750:24:113",
                          "nodeType": "YulFunctionCall",
                          "src": "2750:24:113"
                        },
                        "variables": [
                          {
                            "name": "destpart",
                            "nativeSrc": "2738:8:113",
                            "nodeType": "YulTypedName",
                            "src": "2738:8:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_dest",
                              "nativeSrc": "2795:5:113",
                              "nodeType": "YulIdentifier",
                              "src": "2795:5:113"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "destpart",
                                  "nativeSrc": "2805:8:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "2805:8:113"
                                },
                                {
                                  "name": "srcpart",
                                  "nativeSrc": "2815:7:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "2815:7:113"
                                }
                              ],
                              "functionName": {
                                "name": "or",
                                "nativeSrc": "2802:2:113",
                                "nodeType": "YulIdentifier",
                                "src": "2802:2:113"
                              },
                              "nativeSrc": "2802:21:113",
                              "nodeType": "YulFunctionCall",
                              "src": "2802:21:113"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "2788:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "2788:6:113"
                          },
                          "nativeSrc": "2788:36:113",
                          "nodeType": "YulFunctionCall",
                          "src": "2788:36:113"
                        },
                        "nativeSrc": "2788:36:113",
                        "nodeType": "YulExpressionStatement",
                        "src": "2788:36:113"
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 32544,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2760:5:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32544,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2795:5:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32570,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2713:5:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32570,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2768:5:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32546,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2702:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 32593,
                  "nodeType": "InlineAssembly",
                  "src": "2653:182:113"
                }
              ]
            },
            "id": 32595,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_memcpy",
            "nameLocation": "2196:7:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32549,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32544,
                  "mutability": "mutable",
                  "name": "_dest",
                  "nameLocation": "2209:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32595,
                  "src": "2204:10:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32543,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2204:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32546,
                  "mutability": "mutable",
                  "name": "_src",
                  "nameLocation": "2221:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32595,
                  "src": "2216:9:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32545,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2216:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32548,
                  "mutability": "mutable",
                  "name": "_len",
                  "nameLocation": "2232:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32595,
                  "src": "2227:9:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32547,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2227:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2203:34:113"
            },
            "returnParameters": {
              "id": 32550,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2251:0:113"
            },
            "scope": 34366,
            "src": "2187:655:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 32616,
              "nodeType": "Block",
              "src": "3123:142:113",
              "statements": [
                {
                  "assignments": [
                    32604
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32604,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "3139:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32616,
                      "src": "3134:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32603,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3134:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32605,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3134:8:113"
                },
                {
                  "AST": {
                    "nativeSrc": "3162:48:113",
                    "nodeType": "YulBlock",
                    "src": "3162:48:113",
                    "statements": [
                      {
                        "nativeSrc": "3177:22:113",
                        "nodeType": "YulAssignment",
                        "src": "3177:22:113",
                        "value": {
                          "arguments": [
                            {
                              "name": "self",
                              "nativeSrc": "3188:4:113",
                              "nodeType": "YulIdentifier",
                              "src": "3188:4:113"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3194:4:113",
                              "nodeType": "YulLiteral",
                              "src": "3194:4:113",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "3184:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "3184:3:113"
                          },
                          "nativeSrc": "3184:15:113",
                          "nodeType": "YulFunctionCall",
                          "src": "3184:15:113"
                        },
                        "variableNames": [
                          {
                            "name": "ptr",
                            "nativeSrc": "3177:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "3177:3:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 32604,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3177:3:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32597,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3188:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 32606,
                  "nodeType": "InlineAssembly",
                  "src": "3153:57:113"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 32610,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32597,
                              "src": "3239:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 32609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3233:5:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 32608,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3233:5:113",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 32611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3233:11:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 32612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3245:6:113",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "3233:18:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 32613,
                        "name": "ptr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32604,
                        "src": "3253:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 32607,
                      "name": "Slice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32542,
                      "src": "3227:5:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Slice_$32542_storage_ptr_$",
                        "typeString": "type(struct Slices.Slice storage pointer)"
                      }
                    },
                    "id": 32614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3227:30:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 32602,
                  "id": 32615,
                  "nodeType": "Return",
                  "src": "3220:37:113"
                }
              ]
            },
            "id": 32617,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toSlice",
            "nameLocation": "3058:7:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32598,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32597,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "3080:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32617,
                  "src": "3066:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 32596,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3066:6:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3065:20:113"
            },
            "returnParameters": {
              "id": 32602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32601,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 32617,
                  "src": "3109:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32600,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32599,
                      "name": "Slice",
                      "nameLocations": [
                        "3109:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "3109:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "3109:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3108:14:113"
            },
            "scope": 34366,
            "src": "3049:216:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32775,
              "nodeType": "Block",
              "src": "3524:774:113",
              "statements": [
                {
                  "assignments": [
                    32625
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32625,
                      "mutability": "mutable",
                      "name": "ret",
                      "nameLocation": "3540:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32775,
                      "src": "3535:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32624,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3535:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32626,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3535:8:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 32629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 32627,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32619,
                      "src": "3558:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32628,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3566:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3558:9:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32632,
                  "nodeType": "IfStatement",
                  "src": "3554:36:113",
                  "trueBody": {
                    "expression": {
                      "hexValue": "30",
                      "id": 32630,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3589:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "functionReturnParameters": 32623,
                    "id": 32631,
                    "nodeType": "Return",
                    "src": "3582:8:113"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32642,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [
                          {
                            "id": 32635,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "3610:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 32634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3605:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 32633,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3605:4:113",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 32636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3605:10:113",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 32639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3623:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 32638,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "3623:7:113",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              }
                            ],
                            "id": 32637,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "3618:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 32640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3618:13:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint128",
                            "typeString": "type(uint128)"
                          }
                        },
                        "id": 32641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3632:3:113",
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "3618:17:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "3605:30:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32643,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3639:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3605:35:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32662,
                  "nodeType": "IfStatement",
                  "src": "3601:156:113",
                  "trueBody": {
                    "id": 32661,
                    "nodeType": "Block",
                    "src": "3642:115:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 32647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32645,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32625,
                            "src": "3657:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3136",
                            "id": 32646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3664:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "3657:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32648,
                        "nodeType": "ExpressionStatement",
                        "src": "3657:9:113"
                      },
                      {
                        "expression": {
                          "id": 32659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32649,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "3681:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 32654,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32619,
                                      "src": "3701:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 32653,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3696:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 32652,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3696:4:113",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 32655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3696:10:113",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                  "id": 32656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3709:35:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                    "typeString": "int_const 3402...(31 digits omitted)...1456"
                                  },
                                  "value": "0x100000000000000000000000000000000"
                                },
                                "src": "3696:48:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3688:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 32650,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3688:7:113",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 32658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3688:57:113",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3681:64:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32660,
                        "nodeType": "ExpressionStatement",
                        "src": "3681:64:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [
                          {
                            "id": 32665,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "3776:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 32664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3771:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 32663,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3771:4:113",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 32666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3771:10:113",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 32669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3789:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 32668,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "3789:6:113",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              }
                            ],
                            "id": 32667,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "3784:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 32670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3784:12:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint64",
                            "typeString": "type(uint64)"
                          }
                        },
                        "id": 32671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3797:3:113",
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "3784:16:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "3771:29:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32673,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3804:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3771:34:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32692,
                  "nodeType": "IfStatement",
                  "src": "3767:138:113",
                  "trueBody": {
                    "id": 32691,
                    "nodeType": "Block",
                    "src": "3807:98:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 32677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32675,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32625,
                            "src": "3822:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "38",
                            "id": 32676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3829:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "3822:8:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32678,
                        "nodeType": "ExpressionStatement",
                        "src": "3822:8:113"
                      },
                      {
                        "expression": {
                          "id": 32689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32679,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "3845:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 32684,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32619,
                                      "src": "3865:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 32683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3860:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 32682,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3860:4:113",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 32685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3860:10:113",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "30783130303030303030303030303030303030",
                                  "id": 32686,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3873:19:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                    "typeString": "int_const 18446744073709551616"
                                  },
                                  "value": "0x10000000000000000"
                                },
                                "src": "3860:32:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3852:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 32680,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3852:7:113",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 32688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3852:41:113",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3845:48:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32690,
                        "nodeType": "ExpressionStatement",
                        "src": "3845:48:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [
                          {
                            "id": 32695,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "3924:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 32694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3919:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 32693,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3919:4:113",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 32696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3919:10:113",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 32699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3937:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 32698,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3937:6:113",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              }
                            ],
                            "id": 32697,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "3932:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 32700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3932:12:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint32",
                            "typeString": "type(uint32)"
                          }
                        },
                        "id": 32701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3945:3:113",
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "3932:16:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "3919:29:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32703,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3952:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3919:34:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32722,
                  "nodeType": "IfStatement",
                  "src": "3915:130:113",
                  "trueBody": {
                    "id": 32721,
                    "nodeType": "Block",
                    "src": "3955:90:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 32707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32705,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32625,
                            "src": "3970:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "34",
                            "id": 32706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3977:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "3970:8:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32708,
                        "nodeType": "ExpressionStatement",
                        "src": "3970:8:113"
                      },
                      {
                        "expression": {
                          "id": 32719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32709,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "3993:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 32714,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32619,
                                      "src": "4013:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 32713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4008:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 32712,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4008:4:113",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 32715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4008:10:113",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "3078313030303030303030",
                                  "id": 32716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4021:11:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4294967296_by_1",
                                    "typeString": "int_const 4294967296"
                                  },
                                  "value": "0x100000000"
                                },
                                "src": "4008:24:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4000:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 32710,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "4000:7:113",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 32718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4000:33:113",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3993:40:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32720,
                        "nodeType": "ExpressionStatement",
                        "src": "3993:40:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [
                          {
                            "id": 32725,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "4064:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 32724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4059:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 32723,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4059:4:113",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 32726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4059:10:113",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 32729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4077:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              },
                              "typeName": {
                                "id": 32728,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "4077:6:113",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              }
                            ],
                            "id": 32727,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "4072:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 32730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4072:12:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint16",
                            "typeString": "type(uint16)"
                          }
                        },
                        "id": 32731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "4085:3:113",
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "4072:16:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "src": "4059:29:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4092:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4059:34:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32752,
                  "nodeType": "IfStatement",
                  "src": "4055:126:113",
                  "trueBody": {
                    "id": 32751,
                    "nodeType": "Block",
                    "src": "4095:86:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 32737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32735,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32625,
                            "src": "4110:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 32736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4117:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "4110:8:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32738,
                        "nodeType": "ExpressionStatement",
                        "src": "4110:8:113"
                      },
                      {
                        "expression": {
                          "id": 32749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32739,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "4133:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 32747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 32744,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32619,
                                      "src": "4153:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 32743,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4148:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 32742,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4148:4:113",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 32745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4148:10:113",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "30783130303030",
                                  "id": 32746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4161:7:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_65536_by_1",
                                    "typeString": "int_const 65536"
                                  },
                                  "value": "0x10000"
                                },
                                "src": "4148:20:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4140:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 32740,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "4140:7:113",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 32748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4140:29:113",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4133:36:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 32750,
                        "nodeType": "ExpressionStatement",
                        "src": "4133:36:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 32762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "arguments": [
                          {
                            "id": 32755,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32619,
                            "src": "4200:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 32754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4195:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 32753,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4195:4:113",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 32756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4195:10:113",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 32759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4213:5:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 32758,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "4213:5:113",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              }
                            ],
                            "id": 32757,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "4208:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 32760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4208:11:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_uint8",
                            "typeString": "type(uint8)"
                          }
                        },
                        "id": 32761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "4220:3:113",
                        "memberName": "max",
                        "nodeType": "MemberAccess",
                        "src": "4208:15:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "4195:28:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32763,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4227:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4195:33:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32770,
                  "nodeType": "IfStatement",
                  "src": "4191:74:113",
                  "trueBody": {
                    "id": 32769,
                    "nodeType": "Block",
                    "src": "4230:35:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 32767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32765,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32625,
                            "src": "4245:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 32766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4252:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4245:8:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 32768,
                        "nodeType": "ExpressionStatement",
                        "src": "4245:8:113"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3332",
                      "id": 32771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4282:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "id": 32772,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32625,
                      "src": "4287:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4282:8:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 32623,
                  "id": 32774,
                  "nodeType": "Return",
                  "src": "4275:15:113"
                }
              ]
            },
            "id": 32776,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "len",
            "nameLocation": "3477:3:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32619,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "3489:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32776,
                  "src": "3481:12:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32618,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3480:14:113"
            },
            "returnParameters": {
              "id": 32623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32622,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 32776,
                  "src": "3518:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32621,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3518:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3517:6:113"
            },
            "scope": 34366,
            "src": "3468:830:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32793,
              "nodeType": "Block",
              "src": "4688:304:113",
              "statements": [
                {
                  "AST": {
                    "nativeSrc": "4792:162:113",
                    "nodeType": "YulBlock",
                    "src": "4792:162:113",
                    "statements": [
                      {
                        "nativeSrc": "4807:22:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "4807:22:113",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4824:4:113",
                              "nodeType": "YulLiteral",
                              "src": "4824:4:113",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "4818:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "4818:5:113"
                          },
                          "nativeSrc": "4818:11:113",
                          "nodeType": "YulFunctionCall",
                          "src": "4818:11:113"
                        },
                        "variables": [
                          {
                            "name": "ptr",
                            "nativeSrc": "4811:3:113",
                            "nodeType": "YulTypedName",
                            "src": "4811:3:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "4850:4:113",
                              "nodeType": "YulLiteral",
                              "src": "4850:4:113",
                              "type": "",
                              "value": "0x40"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "ptr",
                                  "nativeSrc": "4860:3:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "4860:3:113"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "4865:4:113",
                                  "nodeType": "YulLiteral",
                                  "src": "4865:4:113",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "4856:3:113",
                                "nodeType": "YulIdentifier",
                                "src": "4856:3:113"
                              },
                              "nativeSrc": "4856:14:113",
                              "nodeType": "YulFunctionCall",
                              "src": "4856:14:113"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "4843:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "4843:6:113"
                          },
                          "nativeSrc": "4843:28:113",
                          "nodeType": "YulFunctionCall",
                          "src": "4843:28:113"
                        },
                        "nativeSrc": "4843:28:113",
                        "nodeType": "YulExpressionStatement",
                        "src": "4843:28:113"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ptr",
                              "nativeSrc": "4892:3:113",
                              "nodeType": "YulIdentifier",
                              "src": "4892:3:113"
                            },
                            {
                              "name": "self",
                              "nativeSrc": "4897:4:113",
                              "nodeType": "YulIdentifier",
                              "src": "4897:4:113"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "4885:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "4885:6:113"
                          },
                          "nativeSrc": "4885:17:113",
                          "nodeType": "YulFunctionCall",
                          "src": "4885:17:113"
                        },
                        "nativeSrc": "4885:17:113",
                        "nodeType": "YulExpressionStatement",
                        "src": "4885:17:113"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "ret",
                                  "nativeSrc": "4927:3:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "4927:3:113"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "4932:4:113",
                                  "nodeType": "YulLiteral",
                                  "src": "4932:4:113",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "4923:3:113",
                                "nodeType": "YulIdentifier",
                                "src": "4923:3:113"
                              },
                              "nativeSrc": "4923:14:113",
                              "nodeType": "YulFunctionCall",
                              "src": "4923:14:113"
                            },
                            {
                              "name": "ptr",
                              "nativeSrc": "4939:3:113",
                              "nodeType": "YulIdentifier",
                              "src": "4939:3:113"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "4916:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "4916:6:113"
                          },
                          "nativeSrc": "4916:27:113",
                          "nodeType": "YulFunctionCall",
                          "src": "4916:27:113"
                        },
                        "nativeSrc": "4916:27:113",
                        "nodeType": "YulExpressionStatement",
                        "src": "4916:27:113"
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 32782,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4927:3:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32778,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4897:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 32784,
                  "nodeType": "InlineAssembly",
                  "src": "4783:171:113"
                },
                {
                  "expression": {
                    "id": 32791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 32785,
                        "name": "ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32782,
                        "src": "4964:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 32787,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4968:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "4964:8:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 32789,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32778,
                          "src": "4979:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 32788,
                        "name": "len",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          32776,
                          32931
                        ],
                        "referencedDeclaration": 32776,
                        "src": "4975:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) pure returns (uint256)"
                        }
                      },
                      "id": 32790,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4975:9:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4964:20:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 32792,
                  "nodeType": "ExpressionStatement",
                  "src": "4964:20:113"
                }
              ]
            },
            "id": 32794,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toSliceB32",
            "nameLocation": "4622:10:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32779,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32778,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4641:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32794,
                  "src": "4633:12:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32777,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4632:14:113"
            },
            "returnParameters": {
              "id": 32783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32782,
                  "mutability": "mutable",
                  "name": "ret",
                  "nameLocation": "4683:3:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32794,
                  "src": "4670:16:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32781,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32780,
                      "name": "Slice",
                      "nameLocations": [
                        "4670:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "4670:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "4670:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4669:18:113"
            },
            "scope": 34366,
            "src": "4613:379:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32810,
              "nodeType": "Block",
              "src": "5270:53:113",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 32804,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32797,
                          "src": "5294:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 32805,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5299:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "5294:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 32806,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32797,
                          "src": "5305:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 32807,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5310:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "5305:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 32803,
                      "name": "Slice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32542,
                      "src": "5288:5:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Slice_$32542_storage_ptr_$",
                        "typeString": "type(struct Slices.Slice storage pointer)"
                      }
                    },
                    "id": 32808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5288:27:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 32802,
                  "id": 32809,
                  "nodeType": "Return",
                  "src": "5281:34:113"
                }
              ]
            },
            "id": 32811,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "copy",
            "nameLocation": "5209:4:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32797,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5227:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32811,
                  "src": "5214:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32796,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32795,
                      "name": "Slice",
                      "nameLocations": [
                        "5214:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "5214:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "5214:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5213:19:113"
            },
            "returnParameters": {
              "id": 32802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32801,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 32811,
                  "src": "5256:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32800,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32799,
                      "name": "Slice",
                      "nameLocations": [
                        "5256:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "5256:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "5256:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5255:14:113"
            },
            "scope": 34366,
            "src": "5200:123:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32841,
              "nodeType": "Block",
              "src": "5577:198:113",
              "statements": [
                {
                  "assignments": [
                    32820
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32820,
                      "mutability": "mutable",
                      "name": "ret",
                      "nameLocation": "5602:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32841,
                      "src": "5588:17:113",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 32819,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5588:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32826,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 32823,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32814,
                          "src": "5619:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 32824,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5624:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "5619:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 32822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5608:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (string memory)"
                      },
                      "typeName": {
                        "id": 32821,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "5612:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      }
                    },
                    "id": 32825,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5608:21:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5588:41:113"
                },
                {
                  "assignments": [
                    32828
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32828,
                      "mutability": "mutable",
                      "name": "retptr",
                      "nameLocation": "5645:6:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32841,
                      "src": "5640:11:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32827,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5640:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32829,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5640:11:113"
                },
                {
                  "AST": {
                    "nativeSrc": "5671:26:113",
                    "nodeType": "YulBlock",
                    "src": "5671:26:113",
                    "statements": [
                      {
                        "nativeSrc": "5673:22:113",
                        "nodeType": "YulAssignment",
                        "src": "5673:22:113",
                        "value": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nativeSrc": "5687:3:113",
                              "nodeType": "YulIdentifier",
                              "src": "5687:3:113"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "5692:2:113",
                              "nodeType": "YulLiteral",
                              "src": "5692:2:113",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "5683:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "5683:3:113"
                          },
                          "nativeSrc": "5683:12:113",
                          "nodeType": "YulFunctionCall",
                          "src": "5683:12:113"
                        },
                        "variableNames": [
                          {
                            "name": "retptr",
                            "nativeSrc": "5673:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "5673:6:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 32820,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5687:3:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 32828,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5673:6:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 32830,
                  "nodeType": "InlineAssembly",
                  "src": "5662:35:113"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 32832,
                        "name": "retptr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32828,
                        "src": "5717:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 32833,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32814,
                          "src": "5725:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 32834,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5730:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "5725:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 32835,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32814,
                          "src": "5736:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 32836,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5741:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "5736:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 32831,
                      "name": "_memcpy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32595,
                      "src": "5709:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256) pure"
                      }
                    },
                    "id": 32837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5709:37:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 32838,
                  "nodeType": "ExpressionStatement",
                  "src": "5709:37:113"
                },
                {
                  "expression": {
                    "id": 32839,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 32820,
                    "src": "5764:3:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 32818,
                  "id": 32840,
                  "nodeType": "Return",
                  "src": "5757:10:113"
                }
              ]
            },
            "id": 32842,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toString",
            "nameLocation": "5511:8:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32814,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5533:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32842,
                  "src": "5520:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32813,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32812,
                      "name": "Slice",
                      "nameLocations": [
                        "5520:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "5520:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "5520:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5519:19:113"
            },
            "returnParameters": {
              "id": 32818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32817,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 32842,
                  "src": "5562:13:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 32816,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5562:6:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5561:15:113"
            },
            "scope": 34366,
            "src": "5502:273:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32930,
              "nodeType": "Block",
              "src": "6240:652:113",
              "statements": [
                {
                  "assignments": [
                    32851
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32851,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "6332:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32930,
                      "src": "6327:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32850,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6327:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32856,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 32852,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32845,
                        "src": "6338:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 32853,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6343:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "6338:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "3331",
                      "id": 32854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6350:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_31_by_1",
                        "typeString": "int_const 31"
                      },
                      "value": "31"
                    },
                    "src": "6338:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6327:25:113"
                },
                {
                  "assignments": [
                    32858
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32858,
                      "mutability": "mutable",
                      "name": "end",
                      "nameLocation": "6368:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 32930,
                      "src": "6363:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32857,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6363:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32863,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 32859,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32851,
                      "src": "6374:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "expression": {
                        "id": 32860,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32845,
                        "src": "6380:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 32861,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6385:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "6380:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6374:15:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6363:26:113"
                },
                {
                  "body": {
                    "id": 32928,
                    "nodeType": "Block",
                    "src": "6430:455:113",
                    "statements": [
                      {
                        "assignments": [
                          32875
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32875,
                            "mutability": "mutable",
                            "name": "b",
                            "nameLocation": "6451:1:113",
                            "nodeType": "VariableDeclaration",
                            "scope": 32928,
                            "src": "6445:7:113",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 32874,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "6445:5:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 32876,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6445:7:113"
                      },
                      {
                        "AST": {
                          "nativeSrc": "6476:30:113",
                          "nodeType": "YulBlock",
                          "src": "6476:30:113",
                          "statements": [
                            {
                              "nativeSrc": "6478:26:113",
                              "nodeType": "YulAssignment",
                              "src": "6478:26:113",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "6493:3:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "6493:3:113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "6487:5:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "6487:5:113"
                                    },
                                    "nativeSrc": "6487:10:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6487:10:113"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "6499:4:113",
                                    "nodeType": "YulLiteral",
                                    "src": "6499:4:113",
                                    "type": "",
                                    "value": "0xFF"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "6483:3:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "6483:3:113"
                                },
                                "nativeSrc": "6483:21:113",
                                "nodeType": "YulFunctionCall",
                                "src": "6483:21:113"
                              },
                              "variableNames": [
                                {
                                  "name": "b",
                                  "nativeSrc": "6478:1:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "6478:1:113"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 32875,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6478:1:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 32851,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6493:3:113",
                            "valueSize": 1
                          }
                        ],
                        "id": 32877,
                        "nodeType": "InlineAssembly",
                        "src": "6467:39:113"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 32880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 32878,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32875,
                            "src": "6524:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30783830",
                            "id": 32879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6528:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "0x80"
                          },
                          "src": "6524:8:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 32888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 32886,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32875,
                              "src": "6586:1:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "hexValue": "30784530",
                              "id": 32887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6590:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_224_by_1",
                                "typeString": "int_const 224"
                              },
                              "value": "0xE0"
                            },
                            "src": "6586:8:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 32896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 32894,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32875,
                                "src": "6648:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30784630",
                                "id": 32895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6652:4:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_240_by_1",
                                  "typeString": "int_const 240"
                                },
                                "value": "0xF0"
                              },
                              "src": "6648:8:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 32904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 32902,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32875,
                                  "src": "6710:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30784638",
                                  "id": 32903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6714:4:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_248_by_1",
                                    "typeString": "int_const 248"
                                  },
                                  "value": "0xF8"
                                },
                                "src": "6710:8:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 32912,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 32910,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32875,
                                    "src": "6772:1:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "30784643",
                                    "id": 32911,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6776:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_252_by_1",
                                      "typeString": "int_const 252"
                                    },
                                    "value": "0xFC"
                                  },
                                  "src": "6772:8:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 32922,
                                  "nodeType": "Block",
                                  "src": "6831:43:113",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 32920,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 32918,
                                          "name": "ptr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32851,
                                          "src": "6850:3:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "hexValue": "36",
                                          "id": 32919,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6857:1:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_6_by_1",
                                            "typeString": "int_const 6"
                                          },
                                          "value": "6"
                                        },
                                        "src": "6850:8:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 32921,
                                      "nodeType": "ExpressionStatement",
                                      "src": "6850:8:113"
                                    }
                                  ]
                                },
                                "id": 32923,
                                "nodeType": "IfStatement",
                                "src": "6769:105:113",
                                "trueBody": {
                                  "id": 32917,
                                  "nodeType": "Block",
                                  "src": "6782:43:113",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 32915,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 32913,
                                          "name": "ptr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 32851,
                                          "src": "6801:3:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "+=",
                                        "rightHandSide": {
                                          "hexValue": "35",
                                          "id": 32914,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6808:1:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_5_by_1",
                                            "typeString": "int_const 5"
                                          },
                                          "value": "5"
                                        },
                                        "src": "6801:8:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 32916,
                                      "nodeType": "ExpressionStatement",
                                      "src": "6801:8:113"
                                    }
                                  ]
                                }
                              },
                              "id": 32924,
                              "nodeType": "IfStatement",
                              "src": "6707:167:113",
                              "trueBody": {
                                "id": 32909,
                                "nodeType": "Block",
                                "src": "6720:43:113",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 32907,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 32905,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 32851,
                                        "src": "6739:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "hexValue": "34",
                                        "id": 32906,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6746:1:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        },
                                        "value": "4"
                                      },
                                      "src": "6739:8:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 32908,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6739:8:113"
                                  }
                                ]
                              }
                            },
                            "id": 32925,
                            "nodeType": "IfStatement",
                            "src": "6645:229:113",
                            "trueBody": {
                              "id": 32901,
                              "nodeType": "Block",
                              "src": "6658:43:113",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 32899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 32897,
                                      "name": "ptr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 32851,
                                      "src": "6677:3:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "33",
                                      "id": 32898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6684:1:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "6677:8:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 32900,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6677:8:113"
                                }
                              ]
                            }
                          },
                          "id": 32926,
                          "nodeType": "IfStatement",
                          "src": "6583:291:113",
                          "trueBody": {
                            "id": 32893,
                            "nodeType": "Block",
                            "src": "6596:43:113",
                            "statements": [
                              {
                                "expression": {
                                  "id": 32891,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 32889,
                                    "name": "ptr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32851,
                                    "src": "6615:3:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "hexValue": "32",
                                    "id": 32890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6622:1:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "6615:8:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 32892,
                                "nodeType": "ExpressionStatement",
                                "src": "6615:8:113"
                              }
                            ]
                          }
                        },
                        "id": 32927,
                        "nodeType": "IfStatement",
                        "src": "6520:354:113",
                        "trueBody": {
                          "id": 32885,
                          "nodeType": "Block",
                          "src": "6534:43:113",
                          "statements": [
                            {
                              "expression": {
                                "id": 32883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 32881,
                                  "name": "ptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32851,
                                  "src": "6553:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 32882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6560:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6553:8:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 32884,
                              "nodeType": "ExpressionStatement",
                              "src": "6553:8:113"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 32868,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32851,
                      "src": "6413:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 32869,
                      "name": "end",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32858,
                      "src": "6419:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6413:9:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32929,
                  "initializationExpression": {
                    "expression": {
                      "id": 32866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 32864,
                        "name": "_l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32848,
                        "src": "6405:2:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "hexValue": "30",
                        "id": 32865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6410:1:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6405:6:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32867,
                    "nodeType": "ExpressionStatement",
                    "src": "6405:6:113"
                  },
                  "isSimpleCounterLoop": false,
                  "loopExpression": {
                    "expression": {
                      "id": 32872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6424:4:113",
                      "subExpression": {
                        "id": 32871,
                        "name": "_l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32848,
                        "src": "6424:2:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32873,
                    "nodeType": "ExpressionStatement",
                    "src": "6424:4:113"
                  },
                  "nodeType": "ForStatement",
                  "src": "6400:485:113"
                }
              ]
            },
            "id": 32931,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "len",
            "nameLocation": "6185:3:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32846,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32845,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6202:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32931,
                  "src": "6189:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32844,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32843,
                      "name": "Slice",
                      "nameLocations": [
                        "6189:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "6189:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "6189:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6188:19:113"
            },
            "returnParameters": {
              "id": 32849,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32848,
                  "mutability": "mutable",
                  "name": "_l",
                  "nameLocation": "6236:2:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32931,
                  "src": "6231:7:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 32847,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6231:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6230:9:113"
            },
            "scope": 34366,
            "src": "6176:716:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 32944,
              "nodeType": "Block",
              "src": "7155:40:113",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32942,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 32939,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32934,
                        "src": "7173:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 32940,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7178:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "7173:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 32941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7186:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7173:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 32938,
                  "id": 32943,
                  "nodeType": "Return",
                  "src": "7166:21:113"
                }
              ]
            },
            "id": 32945,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "empty",
            "nameLocation": "7101:5:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32934,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7120:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 32945,
                  "src": "7107:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32933,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32932,
                      "name": "Slice",
                      "nameLocations": [
                        "7107:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "7107:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "7107:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7106:19:113"
            },
            "returnParameters": {
              "id": 32938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32937,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 32945,
                  "src": "7149:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 32936,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7149:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7148:6:113"
            },
            "scope": 34366,
            "src": "7092:103:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33080,
              "nodeType": "Block",
              "src": "7718:992:113",
              "statements": [
                {
                  "assignments": [
                    32957
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32957,
                      "mutability": "mutable",
                      "name": "shortest",
                      "nameLocation": "7734:8:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33080,
                      "src": "7729:13:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32956,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7729:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32960,
                  "initialValue": {
                    "expression": {
                      "id": 32958,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32948,
                      "src": "7745:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                        "typeString": "struct Slices.Slice memory"
                      }
                    },
                    "id": 32959,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "7750:4:113",
                    "memberName": "_len",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 32539,
                    "src": "7745:9:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7729:25:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 32961,
                        "name": "other",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32951,
                        "src": "7769:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 32962,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7775:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "7769:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 32963,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32948,
                        "src": "7782:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 32964,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7787:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "7782:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7769:22:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 32971,
                  "nodeType": "IfStatement",
                  "src": "7765:62:113",
                  "trueBody": {
                    "expression": {
                      "id": 32969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 32966,
                        "name": "shortest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32957,
                        "src": "7806:8:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "expression": {
                          "id": 32967,
                          "name": "other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32951,
                          "src": "7817:5:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 32968,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "7823:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "7817:10:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7806:21:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32970,
                    "nodeType": "ExpressionStatement",
                    "src": "7806:21:113"
                  }
                },
                {
                  "assignments": [
                    32973
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32973,
                      "mutability": "mutable",
                      "name": "selfptr",
                      "nameLocation": "7845:7:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33080,
                      "src": "7840:12:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32972,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7840:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32976,
                  "initialValue": {
                    "expression": {
                      "id": 32974,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32948,
                      "src": "7855:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                        "typeString": "struct Slices.Slice memory"
                      }
                    },
                    "id": 32975,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "7860:4:113",
                    "memberName": "_ptr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 32541,
                    "src": "7855:9:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7840:24:113"
                },
                {
                  "assignments": [
                    32978
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 32978,
                      "mutability": "mutable",
                      "name": "otherptr",
                      "nameLocation": "7880:8:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33080,
                      "src": "7875:13:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 32977,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7875:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 32981,
                  "initialValue": {
                    "expression": {
                      "id": 32979,
                      "name": "other",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32951,
                      "src": "7891:5:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                        "typeString": "struct Slices.Slice memory"
                      }
                    },
                    "id": 32980,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "7897:4:113",
                    "memberName": "_ptr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 32541,
                    "src": "7891:10:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7875:26:113"
                },
                {
                  "body": {
                    "id": 33066,
                    "nodeType": "Block",
                    "src": "7958:695:113",
                    "statements": [
                      {
                        "assignments": [
                          32994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32994,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "7978:1:113",
                            "nodeType": "VariableDeclaration",
                            "scope": 33066,
                            "src": "7973:6:113",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32993,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7973:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 32995,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7973:6:113"
                      },
                      {
                        "assignments": [
                          32997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 32997,
                            "mutability": "mutable",
                            "name": "b",
                            "nameLocation": "7999:1:113",
                            "nodeType": "VariableDeclaration",
                            "scope": 33066,
                            "src": "7994:6:113",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 32996,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7994:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 32998,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7994:6:113"
                      },
                      {
                        "AST": {
                          "nativeSrc": "8024:91:113",
                          "nodeType": "YulBlock",
                          "src": "8024:91:113",
                          "statements": [
                            {
                              "nativeSrc": "8043:19:113",
                              "nodeType": "YulAssignment",
                              "src": "8043:19:113",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "selfptr",
                                    "nativeSrc": "8054:7:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "8054:7:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "8048:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "8048:5:113"
                                },
                                "nativeSrc": "8048:14:113",
                                "nodeType": "YulFunctionCall",
                                "src": "8048:14:113"
                              },
                              "variableNames": [
                                {
                                  "name": "a",
                                  "nativeSrc": "8043:1:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "8043:1:113"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "8080:20:113",
                              "nodeType": "YulAssignment",
                              "src": "8080:20:113",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "otherptr",
                                    "nativeSrc": "8091:8:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "8091:8:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "8085:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "8085:5:113"
                                },
                                "nativeSrc": "8085:15:113",
                                "nodeType": "YulFunctionCall",
                                "src": "8085:15:113"
                              },
                              "variableNames": [
                                {
                                  "name": "b",
                                  "nativeSrc": "8080:1:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "8080:1:113"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 32994,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8043:1:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 32997,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8080:1:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 32978,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8091:8:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 32973,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8054:7:113",
                            "valueSize": 1
                          }
                        ],
                        "id": 32999,
                        "nodeType": "InlineAssembly",
                        "src": "8015:100:113"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 33000,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32994,
                            "src": "8133:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 33001,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32997,
                            "src": "8138:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8133:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 33057,
                        "nodeType": "IfStatement",
                        "src": "8129:456:113",
                        "trueBody": {
                          "id": 33056,
                          "nodeType": "Block",
                          "src": "8141:444:113",
                          "statements": [
                            {
                              "assignments": [
                                33004
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33004,
                                  "mutability": "mutable",
                                  "name": "mask",
                                  "nameLocation": "8227:4:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33056,
                                  "src": "8222:9:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33003,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8222:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33010,
                              "initialValue": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 33007,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8239:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 33006,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8239:4:113",
                                        "typeDescriptions": {}
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      }
                                    ],
                                    "id": 33005,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967269,
                                    "src": "8234:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 33008,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8234:10:113",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint256",
                                    "typeString": "type(uint256)"
                                  }
                                },
                                "id": 33009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "8245:3:113",
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "src": "8234:14:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8222:26:113"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33011,
                                  "name": "shortest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32957,
                                  "src": "8283:8:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 33012,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8294:2:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "8283:13:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33033,
                              "nodeType": "IfStatement",
                              "src": "8280:105:113",
                              "trueBody": {
                                "id": 33032,
                                "nodeType": "Block",
                                "src": "8298:87:113",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 33030,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 33014,
                                        "name": "mask",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33004,
                                        "src": "8319:4:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 33029,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "~",
                                        "prefix": true,
                                        "src": "8326:39:113",
                                        "subExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 33027,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 33025,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "hexValue": "32",
                                                  "id": 33015,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "8328:1:113",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  },
                                                  "value": "2"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "**",
                                                "rightExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 33023,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "hexValue": "38",
                                                        "id": 33016,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8334:1:113",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_8_by_1",
                                                          "typeString": "int_const 8"
                                                        },
                                                        "value": "8"
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "*",
                                                      "rightExpression": {
                                                        "components": [
                                                          {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 33021,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "id": 33019,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "hexValue": "3332",
                                                                "id": 33017,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "8339:2:113",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_32_by_1",
                                                                  "typeString": "int_const 32"
                                                                },
                                                                "value": "32"
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "-",
                                                              "rightExpression": {
                                                                "id": 33018,
                                                                "name": "shortest",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 32957,
                                                                "src": "8344:8:113",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "src": "8339:13:113",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                              "id": 33020,
                                                              "name": "idx",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 32983,
                                                              "src": "8355:3:113",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "src": "8339:19:113",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "id": 33022,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8338:21:113",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "8334:25:113",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 33024,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "8333:27:113",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "8328:32:113",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 33026,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8363:1:113",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "8328:36:113",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 33028,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "8327:38:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8319:46:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33031,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8319:46:113"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 33055,
                              "nodeType": "UncheckedBlock",
                              "src": "8403:167:113",
                              "statements": [
                                {
                                  "assignments": [
                                    33035
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 33035,
                                      "mutability": "mutable",
                                      "name": "diff",
                                      "nameLocation": "8441:4:113",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 33055,
                                      "src": "8436:9:113",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 33034,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8436:4:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 33045,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 33038,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 33036,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32994,
                                            "src": "8449:1:113",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&",
                                          "rightExpression": {
                                            "id": 33037,
                                            "name": "mask",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33004,
                                            "src": "8453:4:113",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8449:8:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 33039,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8448:10:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 33042,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 33040,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 32997,
                                            "src": "8462:1:113",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&",
                                          "rightExpression": {
                                            "id": 33041,
                                            "name": "mask",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 33004,
                                            "src": "8466:4:113",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8462:8:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 33043,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "8461:10:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8448:23:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "8436:35:113"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 33046,
                                      "name": "diff",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33035,
                                      "src": "8498:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 33047,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8506:1:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "8498:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 33054,
                                  "nodeType": "IfStatement",
                                  "src": "8494:56:113",
                                  "trueBody": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 33051,
                                          "name": "diff",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33035,
                                          "src": "8545:4:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 33050,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "8541:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 33049,
                                          "name": "int",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8541:3:113",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 33052,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8541:9:113",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "functionReturnParameters": 32955,
                                    "id": 33053,
                                    "nodeType": "Return",
                                    "src": "8534:16:113"
                                  }
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 33060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33058,
                            "name": "selfptr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32973,
                            "src": "8599:7:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 33059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8610:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "8599:13:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33061,
                        "nodeType": "ExpressionStatement",
                        "src": "8599:13:113"
                      },
                      {
                        "expression": {
                          "id": 33064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33062,
                            "name": "otherptr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32978,
                            "src": "8627:8:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 33063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8639:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "8627:14:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33065,
                        "nodeType": "ExpressionStatement",
                        "src": "8627:14:113"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 32988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 32986,
                      "name": "idx",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32983,
                      "src": "7931:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 32987,
                      "name": "shortest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32957,
                      "src": "7937:8:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7931:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33067,
                  "initializationExpression": {
                    "assignments": [
                      32983
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 32983,
                        "mutability": "mutable",
                        "name": "idx",
                        "nameLocation": "7922:3:113",
                        "nodeType": "VariableDeclaration",
                        "scope": 33067,
                        "src": "7917:8:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32982,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7917:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 32985,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 32984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7928:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7917:12:113"
                  },
                  "isSimpleCounterLoop": false,
                  "loopExpression": {
                    "expression": {
                      "id": 32991,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 32989,
                        "name": "idx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32983,
                        "src": "7947:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "+=",
                      "rightHandSide": {
                        "hexValue": "3332",
                        "id": 32990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7954:2:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "7947:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 32992,
                    "nodeType": "ExpressionStatement",
                    "src": "7947:9:113"
                  },
                  "nodeType": "ForStatement",
                  "src": "7912:741:113"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 33078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 33070,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32948,
                            "src": "8674:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 33071,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8679:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "8674:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 33069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8670:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        },
                        "typeName": {
                          "id": 33068,
                          "name": "int",
                          "nodeType": "ElementaryTypeName",
                          "src": "8670:3:113",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 33072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8670:14:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 33075,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32951,
                            "src": "8691:5:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 33076,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8697:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "8691:10:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 33074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8687:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        },
                        "typeName": {
                          "id": 33073,
                          "name": "int",
                          "nodeType": "ElementaryTypeName",
                          "src": "8687:3:113",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 33077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8687:15:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "8670:32:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 32955,
                  "id": 33079,
                  "nodeType": "Return",
                  "src": "8663:39:113"
                }
              ]
            },
            "id": 33081,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "compare",
            "nameLocation": "7643:7:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 32952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32948,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7664:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33081,
                  "src": "7651:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32947,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32946,
                      "name": "Slice",
                      "nameLocations": [
                        "7651:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "7651:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "7651:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32951,
                  "mutability": "mutable",
                  "name": "other",
                  "nameLocation": "7683:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33081,
                  "src": "7670:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 32950,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 32949,
                      "name": "Slice",
                      "nameLocations": [
                        "7670:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "7670:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "7670:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7650:39:113"
            },
            "returnParameters": {
              "id": 32955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32954,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33081,
                  "src": "7713:3:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 32953,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "7713:3:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7712:5:113"
            },
            "scope": 34366,
            "src": "7634:1076:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33099,
              "nodeType": "Block",
              "src": "9046:51:113",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 33097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 33093,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33084,
                          "src": "9072:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        {
                          "id": 33094,
                          "name": "other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33087,
                          "src": "9078:5:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        ],
                        "id": 33092,
                        "name": "compare",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33081,
                        "src": "9064:7:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$32542_memory_ptr_$_t_struct$_Slice_$32542_memory_ptr_$returns$_t_int256_$",
                          "typeString": "function (struct Slices.Slice memory,struct Slices.Slice memory) pure returns (int256)"
                        }
                      },
                      "id": 33095,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9064:20:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 33096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9088:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9064:25:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 33091,
                  "id": 33098,
                  "nodeType": "Return",
                  "src": "9057:32:113"
                }
              ]
            },
            "id": 33100,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "equals",
            "nameLocation": "8971:6:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33084,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8991:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33100,
                  "src": "8978:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33083,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33082,
                      "name": "Slice",
                      "nameLocations": [
                        "8978:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "8978:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "8978:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33087,
                  "mutability": "mutable",
                  "name": "other",
                  "nameLocation": "9010:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33100,
                  "src": "8997:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33086,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33085,
                      "name": "Slice",
                      "nameLocations": [
                        "8997:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "8997:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "8997:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8977:39:113"
            },
            "returnParameters": {
              "id": 33091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33090,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33100,
                  "src": "9040:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33089,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9040:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9039:6:113"
            },
            "scope": 34366,
            "src": "8962:135:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33220,
              "nodeType": "Block",
              "src": "9492:834:113",
              "statements": [
                {
                  "expression": {
                    "id": 33117,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33112,
                        "name": "rune",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33106,
                        "src": "9503:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33114,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "9508:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "9503:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 33115,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33103,
                        "src": "9515:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33116,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9520:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "9515:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9503:21:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33118,
                  "nodeType": "ExpressionStatement",
                  "src": "9503:21:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33119,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33103,
                        "src": "9541:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33120,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9546:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "9541:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 33121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9554:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9541:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33132,
                  "nodeType": "IfStatement",
                  "src": "9537:86:113",
                  "trueBody": {
                    "id": 33131,
                    "nodeType": "Block",
                    "src": "9557:66:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33123,
                              "name": "rune",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33106,
                              "src": "9572:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33125,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "9577:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "9572:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 33126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9584:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9572:13:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33128,
                        "nodeType": "ExpressionStatement",
                        "src": "9572:13:113"
                      },
                      {
                        "expression": {
                          "id": 33129,
                          "name": "rune",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33106,
                          "src": "9607:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "functionReturnParameters": 33111,
                        "id": 33130,
                        "nodeType": "Return",
                        "src": "9600:11:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33134
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33134,
                      "mutability": "mutable",
                      "name": "_l",
                      "nameLocation": "9640:2:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33220,
                      "src": "9635:7:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33133,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9635:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33135,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9635:7:113"
                },
                {
                  "assignments": [
                    33137
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33137,
                      "mutability": "mutable",
                      "name": "_b",
                      "nameLocation": "9658:2:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33220,
                      "src": "9653:7:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33136,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9653:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33138,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9653:7:113"
                },
                {
                  "AST": {
                    "nativeSrc": "9744:57:113",
                    "nodeType": "YulBlock",
                    "src": "9744:57:113",
                    "statements": [
                      {
                        "nativeSrc": "9746:53:113",
                        "nodeType": "YulAssignment",
                        "src": "9746:53:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "self",
                                              "nativeSrc": "9776:4:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "9776:4:113"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "9782:2:113",
                                              "nodeType": "YulLiteral",
                                              "src": "9782:2:113",
                                              "type": "",
                                              "value": "32"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "9772:3:113",
                                            "nodeType": "YulIdentifier",
                                            "src": "9772:3:113"
                                          },
                                          "nativeSrc": "9772:13:113",
                                          "nodeType": "YulFunctionCall",
                                          "src": "9772:13:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nativeSrc": "9766:5:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "9766:5:113"
                                      },
                                      "nativeSrc": "9766:20:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9766:20:113"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "9788:2:113",
                                      "nodeType": "YulLiteral",
                                      "src": "9788:2:113",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nativeSrc": "9762:3:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "9762:3:113"
                                  },
                                  "nativeSrc": "9762:29:113",
                                  "nodeType": "YulFunctionCall",
                                  "src": "9762:29:113"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "9756:5:113",
                                "nodeType": "YulIdentifier",
                                "src": "9756:5:113"
                              },
                              "nativeSrc": "9756:36:113",
                              "nodeType": "YulFunctionCall",
                              "src": "9756:36:113"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "9794:4:113",
                              "nodeType": "YulLiteral",
                              "src": "9794:4:113",
                              "type": "",
                              "value": "0xFF"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nativeSrc": "9752:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "9752:3:113"
                          },
                          "nativeSrc": "9752:47:113",
                          "nodeType": "YulFunctionCall",
                          "src": "9752:47:113"
                        },
                        "variableNames": [
                          {
                            "name": "_b",
                            "nativeSrc": "9746:2:113",
                            "nodeType": "YulIdentifier",
                            "src": "9746:2:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 33137,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9746:2:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33103,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9776:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 33139,
                  "nodeType": "InlineAssembly",
                  "src": "9735:66:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33140,
                      "name": "_b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33137,
                      "src": "9815:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "30783830",
                      "id": 33141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9820:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_128_by_1",
                        "typeString": "int_const 128"
                      },
                      "value": "0x80"
                    },
                    "src": "9815:9:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 33148,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33137,
                        "src": "9868:2:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30784530",
                        "id": 33149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9873:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_224_by_1",
                          "typeString": "int_const 224"
                        },
                        "value": "0xE0"
                      },
                      "src": "9868:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 33158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 33156,
                          "name": "_b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33137,
                          "src": "9921:2:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "30784630",
                          "id": 33157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9926:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_240_by_1",
                            "typeString": "int_const 240"
                          },
                          "value": "0xF0"
                        },
                        "src": "9921:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 33168,
                        "nodeType": "Block",
                        "src": "9971:33:113",
                        "statements": [
                          {
                            "expression": {
                              "id": 33166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 33164,
                                "name": "_l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33134,
                                "src": "9986:2:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "hexValue": "34",
                                "id": 33165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9991:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "9986:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33167,
                            "nodeType": "ExpressionStatement",
                            "src": "9986:6:113"
                          }
                        ]
                      },
                      "id": 33169,
                      "nodeType": "IfStatement",
                      "src": "9918:86:113",
                      "trueBody": {
                        "id": 33163,
                        "nodeType": "Block",
                        "src": "9932:33:113",
                        "statements": [
                          {
                            "expression": {
                              "id": 33161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 33159,
                                "name": "_l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33134,
                                "src": "9947:2:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "hexValue": "33",
                                "id": 33160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9952:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "src": "9947:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33162,
                            "nodeType": "ExpressionStatement",
                            "src": "9947:6:113"
                          }
                        ]
                      }
                    },
                    "id": 33170,
                    "nodeType": "IfStatement",
                    "src": "9865:139:113",
                    "trueBody": {
                      "id": 33155,
                      "nodeType": "Block",
                      "src": "9879:33:113",
                      "statements": [
                        {
                          "expression": {
                            "id": 33153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 33151,
                              "name": "_l",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33134,
                              "src": "9894:2:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 33152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9899:1:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "9894:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 33154,
                          "nodeType": "ExpressionStatement",
                          "src": "9894:6:113"
                        }
                      ]
                    }
                  },
                  "id": 33171,
                  "nodeType": "IfStatement",
                  "src": "9811:193:113",
                  "trueBody": {
                    "id": 33147,
                    "nodeType": "Block",
                    "src": "9826:33:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33143,
                            "name": "_l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33134,
                            "src": "9841:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 33144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9846:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "9841:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33146,
                        "nodeType": "ExpressionStatement",
                        "src": "9841:6:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33172,
                      "name": "_l",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33134,
                      "src": "10063:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "expression": {
                        "id": 33173,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33103,
                        "src": "10068:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33174,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10073:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "10068:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10063:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33199,
                  "nodeType": "IfStatement",
                  "src": "10059:159:113",
                  "trueBody": {
                    "id": 33198,
                    "nodeType": "Block",
                    "src": "10079:139:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33176,
                              "name": "rune",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33106,
                              "src": "10094:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33178,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "10099:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "10094:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 33179,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33103,
                              "src": "10106:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33180,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10111:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "10106:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10094:21:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33182,
                        "nodeType": "ExpressionStatement",
                        "src": "10094:21:113"
                      },
                      {
                        "expression": {
                          "id": 33188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33183,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33103,
                              "src": "10130:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33185,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "10135:4:113",
                            "memberName": "_ptr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32541,
                            "src": "10130:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "id": 33186,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33103,
                              "src": "10143:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33187,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10148:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "10143:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10130:22:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33189,
                        "nodeType": "ExpressionStatement",
                        "src": "10130:22:113"
                      },
                      {
                        "expression": {
                          "id": 33194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33190,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33103,
                              "src": "10167:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33192,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "10172:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "10167:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 33193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10179:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10167:13:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33195,
                        "nodeType": "ExpressionStatement",
                        "src": "10167:13:113"
                      },
                      {
                        "expression": {
                          "id": 33196,
                          "name": "rune",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33106,
                          "src": "10202:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "functionReturnParameters": 33111,
                        "id": 33197,
                        "nodeType": "Return",
                        "src": "10195:11:113"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 33204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33200,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33103,
                        "src": "10230:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33202,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10235:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "10230:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 33203,
                      "name": "_l",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33134,
                      "src": "10243:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10230:15:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33205,
                  "nodeType": "ExpressionStatement",
                  "src": "10230:15:113"
                },
                {
                  "expression": {
                    "id": 33210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33206,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33103,
                        "src": "10256:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33208,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10261:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "10256:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "id": 33209,
                      "name": "_l",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33134,
                      "src": "10269:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10256:15:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33211,
                  "nodeType": "ExpressionStatement",
                  "src": "10256:15:113"
                },
                {
                  "expression": {
                    "id": 33216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33212,
                        "name": "rune",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33106,
                        "src": "10282:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33214,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10287:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "10282:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 33215,
                      "name": "_l",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33134,
                      "src": "10294:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10282:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33217,
                  "nodeType": "ExpressionStatement",
                  "src": "10282:14:113"
                },
                {
                  "expression": {
                    "id": 33218,
                    "name": "rune",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33106,
                    "src": "10314:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 33111,
                  "id": 33219,
                  "nodeType": "Return",
                  "src": "10307:11:113"
                }
              ]
            },
            "id": 33221,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "nextRune",
            "nameLocation": "9408:8:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33103,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "9430:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33221,
                  "src": "9417:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33102,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33101,
                      "name": "Slice",
                      "nameLocations": [
                        "9417:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "9417:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "9417:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33106,
                  "mutability": "mutable",
                  "name": "rune",
                  "nameLocation": "9449:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33221,
                  "src": "9436:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33105,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33104,
                      "name": "Slice",
                      "nameLocations": [
                        "9436:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "9436:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "9436:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9416:38:113"
            },
            "returnParameters": {
              "id": 33111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33110,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33221,
                  "src": "9478:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33109,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33108,
                      "name": "Slice",
                      "nameLocations": [
                        "9478:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "9478:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "9478:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9477:14:113"
            },
            "scope": 34366,
            "src": "9399:927:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33235,
              "nodeType": "Block",
              "src": "10652:38:113",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 33231,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33224,
                        "src": "10672:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      {
                        "id": 33232,
                        "name": "ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33228,
                        "src": "10678:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      ],
                      "id": 33230,
                      "name": "nextRune",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        33221,
                        33236
                      ],
                      "referencedDeclaration": 33221,
                      "src": "10663:8:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$32542_memory_ptr_$_t_struct$_Slice_$32542_memory_ptr_$returns$_t_struct$_Slice_$32542_memory_ptr_$",
                        "typeString": "function (struct Slices.Slice memory,struct Slices.Slice memory) pure returns (struct Slices.Slice memory)"
                      }
                    },
                    "id": 33233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10663:19:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "id": 33234,
                  "nodeType": "ExpressionStatement",
                  "src": "10663:19:113"
                }
              ]
            },
            "id": 33236,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "nextRune",
            "nameLocation": "10583:8:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33224,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10605:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33236,
                  "src": "10592:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33223,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33222,
                      "name": "Slice",
                      "nameLocations": [
                        "10592:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "10592:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "10592:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10591:19:113"
            },
            "returnParameters": {
              "id": 33229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33228,
                  "mutability": "mutable",
                  "name": "ret",
                  "nameLocation": "10647:3:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33236,
                  "src": "10634:16:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33227,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33226,
                      "name": "Slice",
                      "nameLocations": [
                        "10634:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "10634:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "10634:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10633:18:113"
            },
            "scope": 34366,
            "src": "10574:116:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33383,
              "nodeType": "Block",
              "src": "10958:1055:113",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33244,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33239,
                        "src": "10973:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33245,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10978:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "10973:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 33246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10986:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10973:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33251,
                  "nodeType": "IfStatement",
                  "src": "10969:55:113",
                  "trueBody": {
                    "id": 33250,
                    "nodeType": "Block",
                    "src": "10989:35:113",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 33248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11011:1:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 33243,
                        "id": 33249,
                        "nodeType": "Return",
                        "src": "11004:8:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33253
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33253,
                      "mutability": "mutable",
                      "name": "word",
                      "nameLocation": "11041:4:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33383,
                      "src": "11036:9:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33252,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11036:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33254,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11036:9:113"
                },
                {
                  "assignments": [
                    33256
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33256,
                      "mutability": "mutable",
                      "name": "length",
                      "nameLocation": "11061:6:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33383,
                      "src": "11056:11:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33255,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11056:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33257,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11056:11:113"
                },
                {
                  "assignments": [
                    33259
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33259,
                      "mutability": "mutable",
                      "name": "divisor",
                      "nameLocation": "11083:7:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33383,
                      "src": "11078:12:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33258,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11078:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33263,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1",
                      "typeString": "int_const 4523...(67 digits omitted)...2656"
                    },
                    "id": 33262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "32",
                      "id": 33260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11093:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "323438",
                      "id": 33261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11098:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_248_by_1",
                        "typeString": "int_const 248"
                      },
                      "value": "248"
                    },
                    "src": "11093:8:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1",
                      "typeString": "int_const 4523...(67 digits omitted)...2656"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11078:23:113"
                },
                {
                  "AST": {
                    "nativeSrc": "11168:38:113",
                    "nodeType": "YulBlock",
                    "src": "11168:38:113",
                    "statements": [
                      {
                        "nativeSrc": "11170:34:113",
                        "nodeType": "YulAssignment",
                        "src": "11170:34:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "self",
                                      "nativeSrc": "11193:4:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "11193:4:113"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "11199:2:113",
                                      "nodeType": "YulLiteral",
                                      "src": "11199:2:113",
                                      "type": "",
                                      "value": "32"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "11189:3:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "11189:3:113"
                                  },
                                  "nativeSrc": "11189:13:113",
                                  "nodeType": "YulFunctionCall",
                                  "src": "11189:13:113"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "11183:5:113",
                                "nodeType": "YulIdentifier",
                                "src": "11183:5:113"
                              },
                              "nativeSrc": "11183:20:113",
                              "nodeType": "YulFunctionCall",
                              "src": "11183:20:113"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "11177:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "11177:5:113"
                          },
                          "nativeSrc": "11177:27:113",
                          "nodeType": "YulFunctionCall",
                          "src": "11177:27:113"
                        },
                        "variableNames": [
                          {
                            "name": "word",
                            "nativeSrc": "11170:4:113",
                            "nodeType": "YulIdentifier",
                            "src": "11170:4:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 33239,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "11193:4:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33253,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "11170:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 33264,
                  "nodeType": "InlineAssembly",
                  "src": "11159:47:113"
                },
                {
                  "assignments": [
                    33266
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33266,
                      "mutability": "mutable",
                      "name": "b",
                      "nameLocation": "11221:1:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33383,
                      "src": "11216:6:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33265,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11216:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33270,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33267,
                      "name": "word",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33253,
                      "src": "11225:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 33268,
                      "name": "divisor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33259,
                      "src": "11232:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11225:14:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11216:23:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33271,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33266,
                      "src": "11254:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "30783830",
                      "id": 33272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11258:4:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_128_by_1",
                        "typeString": "int_const 128"
                      },
                      "value": "0x80"
                    },
                    "src": "11254:8:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33285,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 33283,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33266,
                        "src": "11332:1:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "hexValue": "30784530",
                        "id": 33284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11336:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_224_by_1",
                          "typeString": "int_const 224"
                        },
                        "value": "0xE0"
                      },
                      "src": "11332:8:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 33299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 33297,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33266,
                          "src": "11417:1:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "30784630",
                          "id": 33298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11421:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_240_by_1",
                            "typeString": "int_const 240"
                          },
                          "value": "0xF0"
                        },
                        "src": "11417:8:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 33321,
                        "nodeType": "Block",
                        "src": "11499:66:113",
                        "statements": [
                          {
                            "expression": {
                              "id": 33315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 33311,
                                "name": "ret",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33242,
                                "src": "11514:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33312,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33266,
                                  "src": "11520:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783037",
                                  "id": 33313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11524:4:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_7_by_1",
                                    "typeString": "int_const 7"
                                  },
                                  "value": "0x07"
                                },
                                "src": "11520:8:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11514:14:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33316,
                            "nodeType": "ExpressionStatement",
                            "src": "11514:14:113"
                          },
                          {
                            "expression": {
                              "id": 33319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 33317,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33256,
                                "src": "11543:6:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "hexValue": "34",
                                "id": 33318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11552:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "11543:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33320,
                            "nodeType": "ExpressionStatement",
                            "src": "11543:10:113"
                          }
                        ]
                      },
                      "id": 33322,
                      "nodeType": "IfStatement",
                      "src": "11414:151:113",
                      "trueBody": {
                        "id": 33310,
                        "nodeType": "Block",
                        "src": "11427:66:113",
                        "statements": [
                          {
                            "expression": {
                              "id": 33304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 33300,
                                "name": "ret",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33242,
                                "src": "11442:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33301,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33266,
                                  "src": "11448:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783046",
                                  "id": 33302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11452:4:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_15_by_1",
                                    "typeString": "int_const 15"
                                  },
                                  "value": "0x0F"
                                },
                                "src": "11448:8:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11442:14:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33305,
                            "nodeType": "ExpressionStatement",
                            "src": "11442:14:113"
                          },
                          {
                            "expression": {
                              "id": 33308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 33306,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33256,
                                "src": "11471:6:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "hexValue": "33",
                                "id": 33307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11480:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              },
                              "src": "11471:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 33309,
                            "nodeType": "ExpressionStatement",
                            "src": "11471:10:113"
                          }
                        ]
                      }
                    },
                    "id": 33323,
                    "nodeType": "IfStatement",
                    "src": "11329:236:113",
                    "trueBody": {
                      "id": 33296,
                      "nodeType": "Block",
                      "src": "11342:66:113",
                      "statements": [
                        {
                          "expression": {
                            "id": 33290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 33286,
                              "name": "ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33242,
                              "src": "11357:3:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 33289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 33287,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33266,
                                "src": "11363:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "hexValue": "30783146",
                                "id": 33288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11367:4:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_31_by_1",
                                  "typeString": "int_const 31"
                                },
                                "value": "0x1F"
                              },
                              "src": "11363:8:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11357:14:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 33291,
                          "nodeType": "ExpressionStatement",
                          "src": "11357:14:113"
                        },
                        {
                          "expression": {
                            "id": 33294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 33292,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33256,
                              "src": "11386:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 33293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11395:1:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "11386:10:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 33295,
                          "nodeType": "ExpressionStatement",
                          "src": "11386:10:113"
                        }
                      ]
                    }
                  },
                  "id": 33324,
                  "nodeType": "IfStatement",
                  "src": "11250:315:113",
                  "trueBody": {
                    "id": 33282,
                    "nodeType": "Block",
                    "src": "11264:59:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33274,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33242,
                            "src": "11279:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 33275,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33266,
                            "src": "11285:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11279:7:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33277,
                        "nodeType": "ExpressionStatement",
                        "src": "11279:7:113"
                      },
                      {
                        "expression": {
                          "id": 33280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33278,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33256,
                            "src": "11301:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 33279,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11310:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11301:10:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33281,
                        "nodeType": "ExpressionStatement",
                        "src": "11301:10:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33325,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33256,
                      "src": "11624:6:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "expression": {
                        "id": 33326,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33239,
                        "src": "11633:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33327,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11638:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "11633:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11624:18:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33332,
                  "nodeType": "IfStatement",
                  "src": "11620:59:113",
                  "trueBody": {
                    "id": 33331,
                    "nodeType": "Block",
                    "src": "11644:35:113",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 33329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11666:1:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 33243,
                        "id": 33330,
                        "nodeType": "Return",
                        "src": "11659:8:113"
                      }
                    ]
                  }
                },
                {
                  "body": {
                    "id": 33379,
                    "nodeType": "Block",
                    "src": "11725:258:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33343,
                            "name": "divisor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33259,
                            "src": "11740:7:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 33344,
                              "name": "divisor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33259,
                              "src": "11750:7:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "hexValue": "323536",
                              "id": 33345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11760:3:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_256_by_1",
                                "typeString": "int_const 256"
                              },
                              "value": "256"
                            },
                            "src": "11750:13:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11740:23:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33348,
                        "nodeType": "ExpressionStatement",
                        "src": "11740:23:113"
                      },
                      {
                        "expression": {
                          "id": 33356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33349,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33266,
                            "src": "11778:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33352,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 33350,
                                    "name": "word",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33253,
                                    "src": "11783:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 33351,
                                    "name": "divisor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33259,
                                    "src": "11790:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11783:14:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 33353,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11782:16:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "30784646",
                              "id": 33354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11801:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_255_by_1",
                                "typeString": "int_const 255"
                              },
                              "value": "0xFF"
                            },
                            "src": "11782:23:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11778:27:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33357,
                        "nodeType": "ExpressionStatement",
                        "src": "11778:27:113"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 33358,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33266,
                              "src": "11824:1:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "hexValue": "30784330",
                              "id": 33359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11828:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_192_by_1",
                                "typeString": "int_const 192"
                              },
                              "value": "0xC0"
                            },
                            "src": "11824:8:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30783830",
                            "id": 33361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11836:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "0x80"
                          },
                          "src": "11824:16:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 33366,
                        "nodeType": "IfStatement",
                        "src": "11820:108:113",
                        "trueBody": {
                          "id": 33365,
                          "nodeType": "Block",
                          "src": "11842:86:113",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 33363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11911:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 33243,
                              "id": 33364,
                              "nodeType": "Return",
                              "src": "11904:8:113"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 33377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 33367,
                            "name": "ret",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33242,
                            "src": "11942:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33370,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 33368,
                                    "name": "ret",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33242,
                                    "src": "11949:3:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "3634",
                                    "id": 33369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11955:2:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  "src": "11949:8:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 33371,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11948:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 33372,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33266,
                                    "src": "11962:1:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30783346",
                                    "id": 33373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11966:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_63_by_1",
                                      "typeString": "int_const 63"
                                    },
                                    "value": "0x3F"
                                  },
                                  "src": "11962:8:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 33375,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11961:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11948:23:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11942:29:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33378,
                        "nodeType": "ExpressionStatement",
                        "src": "11942:29:113"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33337,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33334,
                      "src": "11708:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 33338,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33256,
                      "src": "11712:6:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11708:10:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33380,
                  "initializationExpression": {
                    "assignments": [
                      33334
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 33334,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11701:1:113",
                        "nodeType": "VariableDeclaration",
                        "scope": 33380,
                        "src": "11696:6:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33333,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11696:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 33336,
                    "initialValue": {
                      "hexValue": "31",
                      "id": 33335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11705:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11696:10:113"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 33341,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11720:3:113",
                      "subExpression": {
                        "id": 33340,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33334,
                        "src": "11720:1:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 33342,
                    "nodeType": "ExpressionStatement",
                    "src": "11720:3:113"
                  },
                  "nodeType": "ForStatement",
                  "src": "11691:292:113"
                },
                {
                  "expression": {
                    "id": 33381,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33242,
                    "src": "12002:3:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 33243,
                  "id": 33382,
                  "nodeType": "Return",
                  "src": "11995:10:113"
                }
              ]
            },
            "id": 33384,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ord",
            "nameLocation": "10902:3:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33239,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10919:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33384,
                  "src": "10906:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33238,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33237,
                      "name": "Slice",
                      "nameLocations": [
                        "10906:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "10906:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "10906:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10905:19:113"
            },
            "returnParameters": {
              "id": 33243,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33242,
                  "mutability": "mutable",
                  "name": "ret",
                  "nameLocation": "10953:3:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33384,
                  "src": "10948:8:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33241,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10948:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10947:10:113"
            },
            "scope": 34366,
            "src": "10893:1120:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33393,
              "nodeType": "Block",
              "src": "12242:104:113",
              "statements": [
                {
                  "AST": {
                    "nativeSrc": "12262:77:113",
                    "nodeType": "YulBlock",
                    "src": "12262:77:113",
                    "statements": [
                      {
                        "nativeSrc": "12277:51:113",
                        "nodeType": "YulAssignment",
                        "src": "12277:51:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "self",
                                      "nativeSrc": "12304:4:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "12304:4:113"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "12310:2:113",
                                      "nodeType": "YulLiteral",
                                      "src": "12310:2:113",
                                      "type": "",
                                      "value": "32"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "12300:3:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "12300:3:113"
                                  },
                                  "nativeSrc": "12300:13:113",
                                  "nodeType": "YulFunctionCall",
                                  "src": "12300:13:113"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "12294:5:113",
                                "nodeType": "YulIdentifier",
                                "src": "12294:5:113"
                              },
                              "nativeSrc": "12294:20:113",
                              "nodeType": "YulFunctionCall",
                              "src": "12294:20:113"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "self",
                                  "nativeSrc": "12322:4:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "12322:4:113"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "12316:5:113",
                                "nodeType": "YulIdentifier",
                                "src": "12316:5:113"
                              },
                              "nativeSrc": "12316:11:113",
                              "nodeType": "YulFunctionCall",
                              "src": "12316:11:113"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nativeSrc": "12284:9:113",
                            "nodeType": "YulIdentifier",
                            "src": "12284:9:113"
                          },
                          "nativeSrc": "12284:44:113",
                          "nodeType": "YulFunctionCall",
                          "src": "12284:44:113"
                        },
                        "variableNames": [
                          {
                            "name": "ret",
                            "nativeSrc": "12277:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "12277:3:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 33390,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12277:3:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33387,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12304:4:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33387,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12322:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 33392,
                  "nodeType": "InlineAssembly",
                  "src": "12253:86:113"
                }
              ]
            },
            "id": 33394,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "keccak",
            "nameLocation": "12180:6:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33387,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "12200:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33394,
                  "src": "12187:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33386,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33385,
                      "name": "Slice",
                      "nameLocations": [
                        "12187:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "12187:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "12187:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12186:19:113"
            },
            "returnParameters": {
              "id": 33391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33390,
                  "mutability": "mutable",
                  "name": "ret",
                  "nameLocation": "12237:3:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33394,
                  "src": "12229:11:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 33389,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12229:7:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12228:13:113"
            },
            "scope": 34366,
            "src": "12171:175:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33429,
              "nodeType": "Block",
              "src": "12692:473:113",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33405,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33397,
                        "src": "12707:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33406,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12712:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "12707:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 33407,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33400,
                        "src": "12719:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12726:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "12719:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12707:23:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33413,
                  "nodeType": "IfStatement",
                  "src": "12703:68:113",
                  "trueBody": {
                    "id": 33412,
                    "nodeType": "Block",
                    "src": "12732:39:113",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 33410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12754:5:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 33404,
                        "id": 33411,
                        "nodeType": "Return",
                        "src": "12747:12:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33414,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33397,
                        "src": "12787:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33415,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12792:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "12787:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "id": 33416,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33400,
                        "src": "12800:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33417,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12807:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "12800:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12787:24:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33422,
                  "nodeType": "IfStatement",
                  "src": "12783:68:113",
                  "trueBody": {
                    "id": 33421,
                    "nodeType": "Block",
                    "src": "12813:38:113",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 33419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12835:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 33404,
                        "id": 33420,
                        "nodeType": "Return",
                        "src": "12828:11:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33424
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33424,
                      "mutability": "mutable",
                      "name": "equal",
                      "nameLocation": "12868:5:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33429,
                      "src": "12863:10:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 33423,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12863:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33425,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12863:10:113"
                },
                {
                  "AST": {
                    "nativeSrc": "12893:242:113",
                    "nodeType": "YulBlock",
                    "src": "12893:242:113",
                    "statements": [
                      {
                        "nativeSrc": "12908:27:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "12908:27:113",
                        "value": {
                          "arguments": [
                            {
                              "name": "needle",
                              "nativeSrc": "12928:6:113",
                              "nodeType": "YulIdentifier",
                              "src": "12928:6:113"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "12922:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "12922:5:113"
                          },
                          "nativeSrc": "12922:13:113",
                          "nodeType": "YulFunctionCall",
                          "src": "12922:13:113"
                        },
                        "variables": [
                          {
                            "name": "length",
                            "nativeSrc": "12912:6:113",
                            "nodeType": "YulTypedName",
                            "src": "12912:6:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "12949:37:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "12949:37:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "self",
                                  "nativeSrc": "12974:4:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "12974:4:113"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "12980:4:113",
                                  "nodeType": "YulLiteral",
                                  "src": "12980:4:113",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "12970:3:113",
                                "nodeType": "YulIdentifier",
                                "src": "12970:3:113"
                              },
                              "nativeSrc": "12970:15:113",
                              "nodeType": "YulFunctionCall",
                              "src": "12970:15:113"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "12964:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "12964:5:113"
                          },
                          "nativeSrc": "12964:22:113",
                          "nodeType": "YulFunctionCall",
                          "src": "12964:22:113"
                        },
                        "variables": [
                          {
                            "name": "selfptr",
                            "nativeSrc": "12953:7:113",
                            "nodeType": "YulTypedName",
                            "src": "12953:7:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "13000:41:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "13000:41:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "needle",
                                  "nativeSrc": "13027:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13027:6:113"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "13035:4:113",
                                  "nodeType": "YulLiteral",
                                  "src": "13035:4:113",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "13023:3:113",
                                "nodeType": "YulIdentifier",
                                "src": "13023:3:113"
                              },
                              "nativeSrc": "13023:17:113",
                              "nodeType": "YulFunctionCall",
                              "src": "13023:17:113"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "13017:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "13017:5:113"
                          },
                          "nativeSrc": "13017:24:113",
                          "nodeType": "YulFunctionCall",
                          "src": "13017:24:113"
                        },
                        "variables": [
                          {
                            "name": "needleptr",
                            "nativeSrc": "13004:9:113",
                            "nodeType": "YulTypedName",
                            "src": "13004:9:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "13055:69:113",
                        "nodeType": "YulAssignment",
                        "src": "13055:69:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "selfptr",
                                  "nativeSrc": "13077:7:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13077:7:113"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "13086:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13086:6:113"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nativeSrc": "13067:9:113",
                                "nodeType": "YulIdentifier",
                                "src": "13067:9:113"
                              },
                              "nativeSrc": "13067:26:113",
                              "nodeType": "YulFunctionCall",
                              "src": "13067:26:113"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "needleptr",
                                  "nativeSrc": "13105:9:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13105:9:113"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "13116:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13116:6:113"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nativeSrc": "13095:9:113",
                                "nodeType": "YulIdentifier",
                                "src": "13095:9:113"
                              },
                              "nativeSrc": "13095:28:113",
                              "nodeType": "YulFunctionCall",
                              "src": "13095:28:113"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nativeSrc": "13064:2:113",
                            "nodeType": "YulIdentifier",
                            "src": "13064:2:113"
                          },
                          "nativeSrc": "13064:60:113",
                          "nodeType": "YulFunctionCall",
                          "src": "13064:60:113"
                        },
                        "variableNames": [
                          {
                            "name": "equal",
                            "nativeSrc": "13055:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "13055:5:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 33424,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "13055:5:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33400,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12928:6:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33400,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "13027:6:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33397,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12974:4:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 33426,
                  "nodeType": "InlineAssembly",
                  "src": "12884:251:113"
                },
                {
                  "expression": {
                    "id": 33427,
                    "name": "equal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33424,
                    "src": "13152:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 33404,
                  "id": 33428,
                  "nodeType": "Return",
                  "src": "13145:12:113"
                }
              ]
            },
            "id": 33430,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "startsWith",
            "nameLocation": "12612:10:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33397,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "12636:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33430,
                  "src": "12623:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33396,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33395,
                      "name": "Slice",
                      "nameLocations": [
                        "12623:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "12623:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "12623:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33400,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "12655:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33430,
                  "src": "12642:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33399,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33398,
                      "name": "Slice",
                      "nameLocations": [
                        "12642:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "12642:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "12642:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12622:40:113"
            },
            "returnParameters": {
              "id": 33404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33403,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33430,
                  "src": "12686:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33402,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12686:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12685:6:113"
            },
            "scope": 34366,
            "src": "12603:562:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33482,
              "nodeType": "Block",
              "src": "13539:589:113",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33442,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33433,
                        "src": "13554:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33443,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13559:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "13554:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 33444,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33436,
                        "src": "13566:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13573:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "13566:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13554:23:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33450,
                  "nodeType": "IfStatement",
                  "src": "13550:67:113",
                  "trueBody": {
                    "id": 33449,
                    "nodeType": "Block",
                    "src": "13579:38:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33447,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33433,
                          "src": "13601:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "functionReturnParameters": 33441,
                        "id": 33448,
                        "nodeType": "Return",
                        "src": "13594:11:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33452
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33452,
                      "mutability": "mutable",
                      "name": "equal",
                      "nameLocation": "13634:5:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33482,
                      "src": "13629:10:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 33451,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "13629:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33454,
                  "initialValue": {
                    "hexValue": "74727565",
                    "id": 33453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "13642:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13629:17:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33455,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33433,
                        "src": "13661:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33456,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13666:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "13661:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 33457,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33436,
                        "src": "13674:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33458,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13681:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "13674:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13661:24:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33462,
                  "nodeType": "IfStatement",
                  "src": "13657:327:113",
                  "trueBody": {
                    "id": 33461,
                    "nodeType": "Block",
                    "src": "13687:297:113",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "13711:262:113",
                          "nodeType": "YulBlock",
                          "src": "13711:262:113",
                          "statements": [
                            {
                              "nativeSrc": "13730:27:113",
                              "nodeType": "YulVariableDeclaration",
                              "src": "13730:27:113",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "needle",
                                    "nativeSrc": "13750:6:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "13750:6:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "13744:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13744:5:113"
                                },
                                "nativeSrc": "13744:13:113",
                                "nodeType": "YulFunctionCall",
                                "src": "13744:13:113"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nativeSrc": "13734:6:113",
                                  "nodeType": "YulTypedName",
                                  "src": "13734:6:113",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "13775:37:113",
                              "nodeType": "YulVariableDeclaration",
                              "src": "13775:37:113",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "self",
                                        "nativeSrc": "13800:4:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "13800:4:113"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "13806:4:113",
                                        "nodeType": "YulLiteral",
                                        "src": "13806:4:113",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "13796:3:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "13796:3:113"
                                    },
                                    "nativeSrc": "13796:15:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "13796:15:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "13790:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13790:5:113"
                                },
                                "nativeSrc": "13790:22:113",
                                "nodeType": "YulFunctionCall",
                                "src": "13790:22:113"
                              },
                              "variables": [
                                {
                                  "name": "selfptr",
                                  "nativeSrc": "13779:7:113",
                                  "nodeType": "YulTypedName",
                                  "src": "13779:7:113",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "13830:41:113",
                              "nodeType": "YulVariableDeclaration",
                              "src": "13830:41:113",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "needle",
                                        "nativeSrc": "13857:6:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "13857:6:113"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "13865:4:113",
                                        "nodeType": "YulLiteral",
                                        "src": "13865:4:113",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "13853:3:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "13853:3:113"
                                    },
                                    "nativeSrc": "13853:17:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "13853:17:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "13847:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13847:5:113"
                                },
                                "nativeSrc": "13847:24:113",
                                "nodeType": "YulFunctionCall",
                                "src": "13847:24:113"
                              },
                              "variables": [
                                {
                                  "name": "needleptr",
                                  "nativeSrc": "13834:9:113",
                                  "nodeType": "YulTypedName",
                                  "src": "13834:9:113",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "13889:69:113",
                              "nodeType": "YulAssignment",
                              "src": "13889:69:113",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "selfptr",
                                        "nativeSrc": "13911:7:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "13911:7:113"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "13920:6:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "13920:6:113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nativeSrc": "13901:9:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "13901:9:113"
                                    },
                                    "nativeSrc": "13901:26:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "13901:26:113"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "needleptr",
                                        "nativeSrc": "13939:9:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "13939:9:113"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "13950:6:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "13950:6:113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nativeSrc": "13929:9:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "13929:9:113"
                                    },
                                    "nativeSrc": "13929:28:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "13929:28:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nativeSrc": "13898:2:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13898:2:113"
                                },
                                "nativeSrc": "13898:60:113",
                                "nodeType": "YulFunctionCall",
                                "src": "13898:60:113"
                              },
                              "variableNames": [
                                {
                                  "name": "equal",
                                  "nativeSrc": "13889:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "13889:5:113"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 33452,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13889:5:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 33436,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13750:6:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 33436,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13857:6:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 33433,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13800:4:113",
                            "valueSize": 1
                          }
                        ],
                        "id": 33460,
                        "nodeType": "InlineAssembly",
                        "src": "13702:271:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "id": 33463,
                    "name": "equal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33452,
                    "src": "14000:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33479,
                  "nodeType": "IfStatement",
                  "src": "13996:101:113",
                  "trueBody": {
                    "id": 33478,
                    "nodeType": "Block",
                    "src": "14007:90:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33464,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33433,
                              "src": "14022:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33466,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "14027:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "14022:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "expression": {
                              "id": 33467,
                              "name": "needle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33436,
                              "src": "14035:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33468,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14042:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "14035:11:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14022:24:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33470,
                        "nodeType": "ExpressionStatement",
                        "src": "14022:24:113"
                      },
                      {
                        "expression": {
                          "id": 33476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33471,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33433,
                              "src": "14061:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33473,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "14066:4:113",
                            "memberName": "_ptr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32541,
                            "src": "14061:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "id": 33474,
                              "name": "needle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33436,
                              "src": "14074:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33475,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14081:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "14074:11:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14061:24:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33477,
                        "nodeType": "ExpressionStatement",
                        "src": "14061:24:113"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 33480,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33433,
                    "src": "14116:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 33441,
                  "id": 33481,
                  "nodeType": "Return",
                  "src": "14109:11:113"
                }
              ]
            },
            "id": 33483,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "beyond",
            "nameLocation": "13455:6:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33433,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "13475:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33483,
                  "src": "13462:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33432,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33431,
                      "name": "Slice",
                      "nameLocations": [
                        "13462:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "13462:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "13462:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33436,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "13494:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33483,
                  "src": "13481:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33435,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33434,
                      "name": "Slice",
                      "nameLocations": [
                        "13481:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "13481:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "13481:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13461:40:113"
            },
            "returnParameters": {
              "id": 33441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33440,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33483,
                  "src": "13525:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33439,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33438,
                      "name": "Slice",
                      "nameLocations": [
                        "13525:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "13525:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "13525:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13524:14:113"
            },
            "scope": 34366,
            "src": "13446:682:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33528,
              "nodeType": "Block",
              "src": "14473:485:113",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33494,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33486,
                        "src": "14488:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33495,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14493:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "14488:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 33496,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33489,
                        "src": "14500:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33497,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14507:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "14500:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14488:23:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33502,
                  "nodeType": "IfStatement",
                  "src": "14484:68:113",
                  "trueBody": {
                    "id": 33501,
                    "nodeType": "Block",
                    "src": "14513:39:113",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 33499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14535:5:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 33493,
                        "id": 33500,
                        "nodeType": "Return",
                        "src": "14528:12:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33504,
                      "mutability": "mutable",
                      "name": "selfptr",
                      "nameLocation": "14569:7:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33528,
                      "src": "14564:12:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33503,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14564:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33513,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 33505,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33486,
                          "src": "14579:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33506,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "14584:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "14579:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "expression": {
                          "id": 33507,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33486,
                          "src": "14591:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33508,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "14596:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "14591:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "14579:21:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "expression": {
                        "id": 33510,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33489,
                        "src": "14603:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33511,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14610:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "14603:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14579:35:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14564:50:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33514,
                      "name": "selfptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33504,
                      "src": "14631:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "id": 33515,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33489,
                        "src": "14642:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33516,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14649:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "14642:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14631:22:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33521,
                  "nodeType": "IfStatement",
                  "src": "14627:66:113",
                  "trueBody": {
                    "id": 33520,
                    "nodeType": "Block",
                    "src": "14655:38:113",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 33518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14677:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 33493,
                        "id": 33519,
                        "nodeType": "Return",
                        "src": "14670:11:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33523
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33523,
                      "mutability": "mutable",
                      "name": "equal",
                      "nameLocation": "14710:5:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33528,
                      "src": "14705:10:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 33522,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "14705:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33524,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14705:10:113"
                },
                {
                  "AST": {
                    "nativeSrc": "14735:191:113",
                    "nodeType": "YulBlock",
                    "src": "14735:191:113",
                    "statements": [
                      {
                        "nativeSrc": "14750:27:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "14750:27:113",
                        "value": {
                          "arguments": [
                            {
                              "name": "needle",
                              "nativeSrc": "14770:6:113",
                              "nodeType": "YulIdentifier",
                              "src": "14770:6:113"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "14764:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "14764:5:113"
                          },
                          "nativeSrc": "14764:13:113",
                          "nodeType": "YulFunctionCall",
                          "src": "14764:13:113"
                        },
                        "variables": [
                          {
                            "name": "length",
                            "nativeSrc": "14754:6:113",
                            "nodeType": "YulTypedName",
                            "src": "14754:6:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "14791:41:113",
                        "nodeType": "YulVariableDeclaration",
                        "src": "14791:41:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "needle",
                                  "nativeSrc": "14818:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "14818:6:113"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "14826:4:113",
                                  "nodeType": "YulLiteral",
                                  "src": "14826:4:113",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "14814:3:113",
                                "nodeType": "YulIdentifier",
                                "src": "14814:3:113"
                              },
                              "nativeSrc": "14814:17:113",
                              "nodeType": "YulFunctionCall",
                              "src": "14814:17:113"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "14808:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "14808:5:113"
                          },
                          "nativeSrc": "14808:24:113",
                          "nodeType": "YulFunctionCall",
                          "src": "14808:24:113"
                        },
                        "variables": [
                          {
                            "name": "needleptr",
                            "nativeSrc": "14795:9:113",
                            "nodeType": "YulTypedName",
                            "src": "14795:9:113",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "14846:69:113",
                        "nodeType": "YulAssignment",
                        "src": "14846:69:113",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "selfptr",
                                  "nativeSrc": "14868:7:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "14868:7:113"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "14877:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "14877:6:113"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nativeSrc": "14858:9:113",
                                "nodeType": "YulIdentifier",
                                "src": "14858:9:113"
                              },
                              "nativeSrc": "14858:26:113",
                              "nodeType": "YulFunctionCall",
                              "src": "14858:26:113"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "needleptr",
                                  "nativeSrc": "14896:9:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "14896:9:113"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "14907:6:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "14907:6:113"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nativeSrc": "14886:9:113",
                                "nodeType": "YulIdentifier",
                                "src": "14886:9:113"
                              },
                              "nativeSrc": "14886:28:113",
                              "nodeType": "YulFunctionCall",
                              "src": "14886:28:113"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nativeSrc": "14855:2:113",
                            "nodeType": "YulIdentifier",
                            "src": "14855:2:113"
                          },
                          "nativeSrc": "14855:60:113",
                          "nodeType": "YulFunctionCall",
                          "src": "14855:60:113"
                        },
                        "variableNames": [
                          {
                            "name": "equal",
                            "nativeSrc": "14846:5:113",
                            "nodeType": "YulIdentifier",
                            "src": "14846:5:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 33523,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14846:5:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33489,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14770:6:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33489,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14818:6:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 33504,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14868:7:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 33525,
                  "nodeType": "InlineAssembly",
                  "src": "14726:200:113"
                },
                {
                  "expression": {
                    "id": 33526,
                    "name": "equal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33523,
                    "src": "14945:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 33493,
                  "id": 33527,
                  "nodeType": "Return",
                  "src": "14938:12:113"
                }
              ]
            },
            "id": 33529,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "endsWith",
            "nameLocation": "14395:8:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33486,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "14417:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33529,
                  "src": "14404:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33485,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33484,
                      "name": "Slice",
                      "nameLocations": [
                        "14404:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "14404:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "14404:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33489,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "14436:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33529,
                  "src": "14423:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33488,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33487,
                      "name": "Slice",
                      "nameLocations": [
                        "14423:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "14423:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "14423:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14403:40:113"
            },
            "returnParameters": {
              "id": 33493,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33492,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33529,
                  "src": "14467:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33491,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14467:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14466:6:113"
            },
            "scope": 34366,
            "src": "14386:572:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33584,
              "nodeType": "Block",
              "src": "15323:554:113",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 33541,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33532,
                        "src": "15338:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33542,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15343:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "15338:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 33543,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33535,
                        "src": "15350:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33544,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15357:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "15350:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15338:23:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33549,
                  "nodeType": "IfStatement",
                  "src": "15334:67:113",
                  "trueBody": {
                    "id": 33548,
                    "nodeType": "Block",
                    "src": "15363:38:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33546,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33532,
                          "src": "15385:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "functionReturnParameters": 33540,
                        "id": 33547,
                        "nodeType": "Return",
                        "src": "15378:11:113"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    33551
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33551,
                      "mutability": "mutable",
                      "name": "selfptr",
                      "nameLocation": "15418:7:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33584,
                      "src": "15413:12:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33550,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15413:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33560,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 33552,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33532,
                          "src": "15428:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33553,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "15433:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "15428:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "expression": {
                          "id": 33554,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33532,
                          "src": "15440:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33555,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "15445:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "15440:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15428:21:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "expression": {
                        "id": 33557,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33535,
                        "src": "15452:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33558,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15459:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "15452:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15428:35:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15413:50:113"
                },
                {
                  "assignments": [
                    33562
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33562,
                      "mutability": "mutable",
                      "name": "equal",
                      "nameLocation": "15479:5:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33584,
                      "src": "15474:10:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 33561,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "15474:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33564,
                  "initialValue": {
                    "hexValue": "74727565",
                    "id": 33563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "15487:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15474:17:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33565,
                      "name": "selfptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33551,
                      "src": "15506:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 33566,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33535,
                        "src": "15517:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33567,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15524:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "15517:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15506:22:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33571,
                  "nodeType": "IfStatement",
                  "src": "15502:270:113",
                  "trueBody": {
                    "id": 33570,
                    "nodeType": "Block",
                    "src": "15530:242:113",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "15554:207:113",
                          "nodeType": "YulBlock",
                          "src": "15554:207:113",
                          "statements": [
                            {
                              "nativeSrc": "15573:27:113",
                              "nodeType": "YulVariableDeclaration",
                              "src": "15573:27:113",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "needle",
                                    "nativeSrc": "15593:6:113",
                                    "nodeType": "YulIdentifier",
                                    "src": "15593:6:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "15587:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "15587:5:113"
                                },
                                "nativeSrc": "15587:13:113",
                                "nodeType": "YulFunctionCall",
                                "src": "15587:13:113"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nativeSrc": "15577:6:113",
                                  "nodeType": "YulTypedName",
                                  "src": "15577:6:113",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "15618:41:113",
                              "nodeType": "YulVariableDeclaration",
                              "src": "15618:41:113",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "needle",
                                        "nativeSrc": "15645:6:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "15645:6:113"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "15653:4:113",
                                        "nodeType": "YulLiteral",
                                        "src": "15653:4:113",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "15641:3:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "15641:3:113"
                                    },
                                    "nativeSrc": "15641:17:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "15641:17:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "15635:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "15635:5:113"
                                },
                                "nativeSrc": "15635:24:113",
                                "nodeType": "YulFunctionCall",
                                "src": "15635:24:113"
                              },
                              "variables": [
                                {
                                  "name": "needleptr",
                                  "nativeSrc": "15622:9:113",
                                  "nodeType": "YulTypedName",
                                  "src": "15622:9:113",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "15677:69:113",
                              "nodeType": "YulAssignment",
                              "src": "15677:69:113",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "selfptr",
                                        "nativeSrc": "15699:7:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "15699:7:113"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "15708:6:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "15708:6:113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nativeSrc": "15689:9:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "15689:9:113"
                                    },
                                    "nativeSrc": "15689:26:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "15689:26:113"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "needleptr",
                                        "nativeSrc": "15727:9:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "15727:9:113"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "15738:6:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "15738:6:113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nativeSrc": "15717:9:113",
                                      "nodeType": "YulIdentifier",
                                      "src": "15717:9:113"
                                    },
                                    "nativeSrc": "15717:28:113",
                                    "nodeType": "YulFunctionCall",
                                    "src": "15717:28:113"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nativeSrc": "15686:2:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "15686:2:113"
                                },
                                "nativeSrc": "15686:60:113",
                                "nodeType": "YulFunctionCall",
                                "src": "15686:60:113"
                              },
                              "variableNames": [
                                {
                                  "name": "equal",
                                  "nativeSrc": "15677:5:113",
                                  "nodeType": "YulIdentifier",
                                  "src": "15677:5:113"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 33562,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15677:5:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 33535,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15593:6:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 33535,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15645:6:113",
                            "valueSize": 1
                          },
                          {
                            "declaration": 33551,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15699:7:113",
                            "valueSize": 1
                          }
                        ],
                        "id": 33569,
                        "nodeType": "InlineAssembly",
                        "src": "15545:216:113"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "id": 33572,
                    "name": "equal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33562,
                    "src": "15788:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33581,
                  "nodeType": "IfStatement",
                  "src": "15784:62:113",
                  "trueBody": {
                    "id": 33580,
                    "nodeType": "Block",
                    "src": "15795:51:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33573,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33532,
                              "src": "15810:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33575,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "15815:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "15810:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "expression": {
                              "id": 33576,
                              "name": "needle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33535,
                              "src": "15823:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33577,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15830:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "15823:11:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15810:24:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33579,
                        "nodeType": "ExpressionStatement",
                        "src": "15810:24:113"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 33582,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33532,
                    "src": "15865:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 33540,
                  "id": 33583,
                  "nodeType": "Return",
                  "src": "15858:11:113"
                }
              ]
            },
            "id": 33585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "until",
            "nameLocation": "15240:5:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33532,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "15259:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33585,
                  "src": "15246:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33531,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33530,
                      "name": "Slice",
                      "nameLocations": [
                        "15246:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "15246:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "15246:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33535,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "15278:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33585,
                  "src": "15265:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33534,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33533,
                      "name": "Slice",
                      "nameLocations": [
                        "15265:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "15265:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "15265:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15245:40:113"
            },
            "returnParameters": {
              "id": 33540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33539,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33585,
                  "src": "15309:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33538,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33537,
                      "name": "Slice",
                      "nameLocations": [
                        "15309:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "15309:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "15309:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15308:14:113"
            },
            "scope": 34366,
            "src": "15231:646:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33714,
              "nodeType": "Block",
              "src": "16143:1388:113",
              "statements": [
                {
                  "assignments": [
                    33599
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33599,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "16159:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33714,
                      "src": "16154:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33598,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16154:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33601,
                  "initialValue": {
                    "id": 33600,
                    "name": "selfptr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33589,
                    "src": "16165:7:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16154:18:113"
                },
                {
                  "assignments": [
                    33603
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33603,
                      "mutability": "mutable",
                      "name": "idx",
                      "nameLocation": "16188:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33714,
                      "src": "16183:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33602,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16183:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33604,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16183:8:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33605,
                      "name": "needlelen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33591,
                      "src": "16208:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 33606,
                      "name": "selflen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33587,
                      "src": "16221:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16208:20:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33709,
                  "nodeType": "IfStatement",
                  "src": "16204:1285:113",
                  "trueBody": {
                    "id": 33708,
                    "nodeType": "Block",
                    "src": "16230:1259:113",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 33608,
                            "name": "needlelen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33591,
                            "src": "16249:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 33609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16262:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "16249:15:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33706,
                          "nodeType": "Block",
                          "src": "17000:478:113",
                          "statements": [
                            {
                              "assignments": [
                                33675
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33675,
                                  "mutability": "mutable",
                                  "name": "hash",
                                  "nameLocation": "17077:4:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33706,
                                  "src": "17069:12:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33674,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17069:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33676,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17069:12:113"
                            },
                            {
                              "AST": {
                                "nativeSrc": "17109:43:113",
                                "nodeType": "YulBlock",
                                "src": "17109:43:113",
                                "statements": [
                                  {
                                    "nativeSrc": "17111:39:113",
                                    "nodeType": "YulAssignment",
                                    "src": "17111:39:113",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "needleptr",
                                          "nativeSrc": "17129:9:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "17129:9:113"
                                        },
                                        {
                                          "name": "needlelen",
                                          "nativeSrc": "17140:9:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "17140:9:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nativeSrc": "17119:9:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "17119:9:113"
                                      },
                                      "nativeSrc": "17119:31:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "17119:31:113"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "hash",
                                        "nativeSrc": "17111:4:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "17111:4:113"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "prague",
                              "externalReferences": [
                                {
                                  "declaration": 33675,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "17111:4:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "17140:9:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33593,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "17129:9:113",
                                  "valueSize": 1
                                }
                              ],
                              "id": 33677,
                              "nodeType": "InlineAssembly",
                              "src": "17100:52:113"
                            },
                            {
                              "body": {
                                "id": 33704,
                                "nodeType": "Block",
                                "src": "17221:242:113",
                                "statements": [
                                  {
                                    "assignments": [
                                      33691
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 33691,
                                        "mutability": "mutable",
                                        "name": "testHash",
                                        "nameLocation": "17252:8:113",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 33704,
                                        "src": "17244:16:113",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 33690,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17244:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 33692,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "17244:16:113"
                                  },
                                  {
                                    "AST": {
                                      "nativeSrc": "17292:41:113",
                                      "nodeType": "YulBlock",
                                      "src": "17292:41:113",
                                      "statements": [
                                        {
                                          "nativeSrc": "17294:37:113",
                                          "nodeType": "YulAssignment",
                                          "src": "17294:37:113",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "ptr",
                                                "nativeSrc": "17316:3:113",
                                                "nodeType": "YulIdentifier",
                                                "src": "17316:3:113"
                                              },
                                              {
                                                "name": "needlelen",
                                                "nativeSrc": "17321:9:113",
                                                "nodeType": "YulIdentifier",
                                                "src": "17321:9:113"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "keccak256",
                                              "nativeSrc": "17306:9:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "17306:9:113"
                                            },
                                            "nativeSrc": "17306:25:113",
                                            "nodeType": "YulFunctionCall",
                                            "src": "17306:25:113"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "testHash",
                                              "nativeSrc": "17294:8:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "17294:8:113"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "prague",
                                    "externalReferences": [
                                      {
                                        "declaration": 33591,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "17321:9:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33599,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "17316:3:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33691,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "17294:8:113",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 33693,
                                    "nodeType": "InlineAssembly",
                                    "src": "17283:50:113"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 33696,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 33694,
                                        "name": "hash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33675,
                                        "src": "17359:4:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 33695,
                                        "name": "testHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33691,
                                        "src": "17367:8:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "17359:16:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 33699,
                                    "nodeType": "IfStatement",
                                    "src": "17355:57:113",
                                    "trueBody": {
                                      "expression": {
                                        "id": 33697,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33599,
                                        "src": "17409:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 33597,
                                      "id": 33698,
                                      "nodeType": "Return",
                                      "src": "17402:10:113"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 33702,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 33700,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33599,
                                        "src": "17435:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 33701,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17442:1:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "17435:8:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33703,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17435:8:113"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33682,
                                  "name": "idx",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33603,
                                  "src": "17186:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 33683,
                                    "name": "selflen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33587,
                                    "src": "17193:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 33684,
                                    "name": "needlelen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33591,
                                    "src": "17203:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17193:19:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17186:26:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33705,
                              "initializationExpression": {
                                "expression": {
                                  "id": 33680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 33678,
                                    "name": "idx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33603,
                                    "src": "17177:3:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "hexValue": "30",
                                    "id": 33679,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17183:1:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "17177:7:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 33681,
                                "nodeType": "ExpressionStatement",
                                "src": "17177:7:113"
                              },
                              "isSimpleCounterLoop": false,
                              "loopExpression": {
                                "expression": {
                                  "id": 33688,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "17214:5:113",
                                  "subExpression": {
                                    "id": 33687,
                                    "name": "idx",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33603,
                                    "src": "17214:3:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 33689,
                                "nodeType": "ExpressionStatement",
                                "src": "17214:5:113"
                              },
                              "nodeType": "ForStatement",
                              "src": "17172:291:113"
                            }
                          ]
                        },
                        "id": 33707,
                        "nodeType": "IfStatement",
                        "src": "16245:1233:113",
                        "trueBody": {
                          "id": 33673,
                          "nodeType": "Block",
                          "src": "16266:728:113",
                          "statements": [
                            {
                              "assignments": [
                                33612
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33612,
                                  "mutability": "mutable",
                                  "name": "mask",
                                  "nameLocation": "16293:4:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33673,
                                  "src": "16285:12:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33611,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16285:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33613,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16285:12:113"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33614,
                                  "name": "needlelen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33591,
                                  "src": "16320:9:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 33615,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16332:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16320:13:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33637,
                              "nodeType": "IfStatement",
                              "src": "16316:112:113",
                              "trueBody": {
                                "id": 33636,
                                "nodeType": "Block",
                                "src": "16335:93:113",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 33634,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 33617,
                                        "name": "mask",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33612,
                                        "src": "16358:4:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 33632,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "~",
                                            "prefix": true,
                                            "src": "16373:34:113",
                                            "subExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 33630,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 33628,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "hexValue": "32",
                                                      "id": 33620,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "16375:1:113",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                      },
                                                      "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "**",
                                                    "rightExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 33626,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "hexValue": "38",
                                                            "id": 33621,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16381:1:113",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_8_by_1",
                                                              "typeString": "int_const 8"
                                                            },
                                                            "value": "8"
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "*",
                                                          "rightExpression": {
                                                            "components": [
                                                              {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                },
                                                                "id": 33624,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "hexValue": "3332",
                                                                  "id": 33622,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "kind": "number",
                                                                  "lValueRequested": false,
                                                                  "nodeType": "Literal",
                                                                  "src": "16386:2:113",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_32_by_1",
                                                                    "typeString": "int_const 32"
                                                                  },
                                                                  "value": "32"
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                  "id": 33623,
                                                                  "name": "needlelen",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 33591,
                                                                  "src": "16391:9:113",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "src": "16386:14:113",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "id": 33625,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "16385:16:113",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "16381:20:113",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "id": 33627,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "16380:22:113",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "16375:27:113",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 33629,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "16405:1:113",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "16375:31:113",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 33631,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "16374:33:113",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33619,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16365:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 33618,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "16365:7:113",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 33633,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16365:43:113",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "16358:50:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33635,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16358:50:113"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                33639
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33639,
                                  "mutability": "mutable",
                                  "name": "needledata",
                                  "nameLocation": "16456:10:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33673,
                                  "src": "16448:18:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33638,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16448:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33640,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16448:18:113"
                            },
                            {
                              "AST": {
                                "nativeSrc": "16494:45:113",
                                "nodeType": "YulBlock",
                                "src": "16494:45:113",
                                "statements": [
                                  {
                                    "nativeSrc": "16496:41:113",
                                    "nodeType": "YulAssignment",
                                    "src": "16496:41:113",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "needleptr",
                                              "nativeSrc": "16520:9:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "16520:9:113"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "16514:5:113",
                                            "nodeType": "YulIdentifier",
                                            "src": "16514:5:113"
                                          },
                                          "nativeSrc": "16514:16:113",
                                          "nodeType": "YulFunctionCall",
                                          "src": "16514:16:113"
                                        },
                                        {
                                          "name": "mask",
                                          "nativeSrc": "16532:4:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "16532:4:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nativeSrc": "16510:3:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "16510:3:113"
                                      },
                                      "nativeSrc": "16510:27:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16510:27:113"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "needledata",
                                        "nativeSrc": "16496:10:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "16496:10:113"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "prague",
                              "externalReferences": [
                                {
                                  "declaration": 33612,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "16532:4:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33639,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "16496:10:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33593,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "16520:9:113",
                                  "valueSize": 1
                                }
                              ],
                              "id": 33641,
                              "nodeType": "InlineAssembly",
                              "src": "16485:54:113"
                            },
                            {
                              "assignments": [
                                33643
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33643,
                                  "mutability": "mutable",
                                  "name": "end",
                                  "nameLocation": "16564:3:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33673,
                                  "src": "16559:8:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 33642,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16559:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33649,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33646,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 33644,
                                    "name": "selfptr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33589,
                                    "src": "16570:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 33645,
                                    "name": "selflen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33587,
                                    "src": "16580:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16570:17:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 33647,
                                  "name": "needlelen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33591,
                                  "src": "16590:9:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16570:29:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16559:40:113"
                            },
                            {
                              "assignments": [
                                33651
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33651,
                                  "mutability": "mutable",
                                  "name": "ptrdata",
                                  "nameLocation": "16626:7:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33673,
                                  "src": "16618:15:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33650,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16618:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33652,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16618:15:113"
                            },
                            {
                              "AST": {
                                "nativeSrc": "16661:36:113",
                                "nodeType": "YulBlock",
                                "src": "16661:36:113",
                                "statements": [
                                  {
                                    "nativeSrc": "16663:32:113",
                                    "nodeType": "YulAssignment",
                                    "src": "16663:32:113",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nativeSrc": "16684:3:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "16684:3:113"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "16678:5:113",
                                            "nodeType": "YulIdentifier",
                                            "src": "16678:5:113"
                                          },
                                          "nativeSrc": "16678:10:113",
                                          "nodeType": "YulFunctionCall",
                                          "src": "16678:10:113"
                                        },
                                        {
                                          "name": "mask",
                                          "nativeSrc": "16690:4:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "16690:4:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nativeSrc": "16674:3:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "16674:3:113"
                                      },
                                      "nativeSrc": "16674:21:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "16674:21:113"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "ptrdata",
                                        "nativeSrc": "16663:7:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "16663:7:113"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "prague",
                              "externalReferences": [
                                {
                                  "declaration": 33612,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "16690:4:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33599,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "16684:3:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33651,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "16663:7:113",
                                  "valueSize": 1
                                }
                              ],
                              "id": 33653,
                              "nodeType": "InlineAssembly",
                              "src": "16652:45:113"
                            },
                            {
                              "body": {
                                "id": 33669,
                                "nodeType": "Block",
                                "src": "16747:203:113",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33659,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 33657,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33599,
                                        "src": "16774:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "id": 33658,
                                        "name": "end",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33643,
                                        "src": "16781:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16774:10:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 33664,
                                    "nodeType": "IfStatement",
                                    "src": "16770:65:113",
                                    "trueBody": {
                                      "expression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 33662,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 33660,
                                          "name": "selfptr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33589,
                                          "src": "16818:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 33661,
                                          "name": "selflen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33587,
                                          "src": "16828:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16818:17:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 33597,
                                      "id": 33663,
                                      "nodeType": "Return",
                                      "src": "16811:24:113"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 33666,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "16858:5:113",
                                      "subExpression": {
                                        "id": 33665,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33599,
                                        "src": "16858:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33667,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16858:5:113"
                                  },
                                  {
                                    "AST": {
                                      "nativeSrc": "16895:36:113",
                                      "nodeType": "YulBlock",
                                      "src": "16895:36:113",
                                      "statements": [
                                        {
                                          "nativeSrc": "16897:32:113",
                                          "nodeType": "YulAssignment",
                                          "src": "16897:32:113",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "ptr",
                                                    "nativeSrc": "16918:3:113",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "16918:3:113"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nativeSrc": "16912:5:113",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16912:5:113"
                                                },
                                                "nativeSrc": "16912:10:113",
                                                "nodeType": "YulFunctionCall",
                                                "src": "16912:10:113"
                                              },
                                              {
                                                "name": "mask",
                                                "nativeSrc": "16924:4:113",
                                                "nodeType": "YulIdentifier",
                                                "src": "16924:4:113"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nativeSrc": "16908:3:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "16908:3:113"
                                            },
                                            "nativeSrc": "16908:21:113",
                                            "nodeType": "YulFunctionCall",
                                            "src": "16908:21:113"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "ptrdata",
                                              "nativeSrc": "16897:7:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "16897:7:113"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "prague",
                                    "externalReferences": [
                                      {
                                        "declaration": 33612,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "16924:4:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33599,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "16918:3:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33651,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "16897:7:113",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 33668,
                                    "nodeType": "InlineAssembly",
                                    "src": "16886:45:113"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 33656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33654,
                                  "name": "ptrdata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33651,
                                  "src": "16724:7:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 33655,
                                  "name": "needledata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33639,
                                  "src": "16735:10:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "16724:21:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33670,
                              "nodeType": "WhileStatement",
                              "src": "16717:233:113"
                            },
                            {
                              "expression": {
                                "id": 33671,
                                "name": "ptr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33599,
                                "src": "16975:3:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 33597,
                              "id": 33672,
                              "nodeType": "Return",
                              "src": "16968:10:113"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33710,
                      "name": "selfptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33589,
                      "src": "17506:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "id": 33711,
                      "name": "selflen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33587,
                      "src": "17516:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17506:17:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 33597,
                  "id": 33713,
                  "nodeType": "Return",
                  "src": "17499:24:113"
                }
              ]
            },
            "id": 33715,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "findPtr",
            "nameLocation": "16047:7:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33594,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33587,
                  "mutability": "mutable",
                  "name": "selflen",
                  "nameLocation": "16060:7:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33715,
                  "src": "16055:12:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33586,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16055:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33589,
                  "mutability": "mutable",
                  "name": "selfptr",
                  "nameLocation": "16074:7:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33715,
                  "src": "16069:12:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33588,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16069:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33591,
                  "mutability": "mutable",
                  "name": "needlelen",
                  "nameLocation": "16088:9:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33715,
                  "src": "16083:14:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33590,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16083:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33593,
                  "mutability": "mutable",
                  "name": "needleptr",
                  "nameLocation": "16104:9:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33715,
                  "src": "16099:14:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33592,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16099:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16054:60:113"
            },
            "returnParameters": {
              "id": 33597,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33596,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33715,
                  "src": "16137:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33595,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16137:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16136:6:113"
            },
            "scope": 34366,
            "src": "16038:1493:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 33840,
              "nodeType": "Block",
              "src": "17794:1390:113",
              "statements": [
                {
                  "assignments": [
                    33729
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33729,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "17810:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33840,
                      "src": "17805:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33728,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17805:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33730,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17805:8:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33731,
                      "name": "needlelen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33721,
                      "src": "17830:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 33732,
                      "name": "selflen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33717,
                      "src": "17843:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17830:20:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33837,
                  "nodeType": "IfStatement",
                  "src": "17826:1326:113",
                  "trueBody": {
                    "id": 33836,
                    "nodeType": "Block",
                    "src": "17852:1300:113",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 33736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 33734,
                            "name": "needlelen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33721,
                            "src": "17871:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 33735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17884:2:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "17871:15:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 33834,
                          "nodeType": "Block",
                          "src": "18623:518:113",
                          "statements": [
                            {
                              "assignments": [
                                33801
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33801,
                                  "mutability": "mutable",
                                  "name": "hash",
                                  "nameLocation": "18700:4:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33834,
                                  "src": "18692:12:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33800,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18692:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33802,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18692:12:113"
                            },
                            {
                              "AST": {
                                "nativeSrc": "18732:43:113",
                                "nodeType": "YulBlock",
                                "src": "18732:43:113",
                                "statements": [
                                  {
                                    "nativeSrc": "18734:39:113",
                                    "nodeType": "YulAssignment",
                                    "src": "18734:39:113",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "needleptr",
                                          "nativeSrc": "18752:9:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "18752:9:113"
                                        },
                                        {
                                          "name": "needlelen",
                                          "nativeSrc": "18763:9:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "18763:9:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nativeSrc": "18742:9:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "18742:9:113"
                                      },
                                      "nativeSrc": "18742:31:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18742:31:113"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "hash",
                                        "nativeSrc": "18734:4:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "18734:4:113"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "prague",
                              "externalReferences": [
                                {
                                  "declaration": 33801,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18734:4:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33721,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18763:9:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33723,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18752:9:113",
                                  "valueSize": 1
                                }
                              ],
                              "id": 33803,
                              "nodeType": "InlineAssembly",
                              "src": "18723:52:113"
                            },
                            {
                              "expression": {
                                "id": 33811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 33804,
                                  "name": "ptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33729,
                                  "src": "18793:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 33805,
                                    "name": "selfptr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33719,
                                    "src": "18799:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 33808,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 33806,
                                          "name": "selflen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33717,
                                          "src": "18810:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 33807,
                                          "name": "needlelen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33721,
                                          "src": "18820:9:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "18810:19:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 33809,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "18809:21:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "18799:31:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18793:37:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33812,
                              "nodeType": "ExpressionStatement",
                              "src": "18793:37:113"
                            },
                            {
                              "body": {
                                "id": 33832,
                                "nodeType": "Block",
                                "src": "18872:254:113",
                                "statements": [
                                  {
                                    "assignments": [
                                      33817
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 33817,
                                        "mutability": "mutable",
                                        "name": "testHash",
                                        "nameLocation": "18903:8:113",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 33832,
                                        "src": "18895:16:113",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 33816,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "18895:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 33818,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "18895:16:113"
                                  },
                                  {
                                    "AST": {
                                      "nativeSrc": "18943:41:113",
                                      "nodeType": "YulBlock",
                                      "src": "18943:41:113",
                                      "statements": [
                                        {
                                          "nativeSrc": "18945:37:113",
                                          "nodeType": "YulAssignment",
                                          "src": "18945:37:113",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "ptr",
                                                "nativeSrc": "18967:3:113",
                                                "nodeType": "YulIdentifier",
                                                "src": "18967:3:113"
                                              },
                                              {
                                                "name": "needlelen",
                                                "nativeSrc": "18972:9:113",
                                                "nodeType": "YulIdentifier",
                                                "src": "18972:9:113"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "keccak256",
                                              "nativeSrc": "18957:9:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "18957:9:113"
                                            },
                                            "nativeSrc": "18957:25:113",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18957:25:113"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "testHash",
                                              "nativeSrc": "18945:8:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "18945:8:113"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "prague",
                                    "externalReferences": [
                                      {
                                        "declaration": 33721,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "18972:9:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33729,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "18967:3:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33817,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "18945:8:113",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 33819,
                                    "nodeType": "InlineAssembly",
                                    "src": "18934:50:113"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 33822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 33820,
                                        "name": "hash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33801,
                                        "src": "19010:4:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 33821,
                                        "name": "testHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33817,
                                        "src": "19018:8:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "19010:16:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 33827,
                                    "nodeType": "IfStatement",
                                    "src": "19006:69:113",
                                    "trueBody": {
                                      "expression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 33825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 33823,
                                          "name": "ptr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33729,
                                          "src": "19060:3:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 33824,
                                          "name": "needlelen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 33721,
                                          "src": "19066:9:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "19060:15:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 33727,
                                      "id": 33826,
                                      "nodeType": "Return",
                                      "src": "19053:22:113"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 33830,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 33828,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33729,
                                        "src": "19098:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 33829,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19105:1:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "19098:8:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33831,
                                    "nodeType": "ExpressionStatement",
                                    "src": "19098:8:113"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33813,
                                  "name": "ptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33729,
                                  "src": "18856:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "id": 33814,
                                  "name": "selfptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33719,
                                  "src": "18863:7:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18856:14:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33833,
                              "nodeType": "WhileStatement",
                              "src": "18849:277:113"
                            }
                          ]
                        },
                        "id": 33835,
                        "nodeType": "IfStatement",
                        "src": "17867:1274:113",
                        "trueBody": {
                          "id": 33799,
                          "nodeType": "Block",
                          "src": "17888:729:113",
                          "statements": [
                            {
                              "assignments": [
                                33738
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33738,
                                  "mutability": "mutable",
                                  "name": "mask",
                                  "nameLocation": "17915:4:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33799,
                                  "src": "17907:12:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33737,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17907:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33739,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17907:12:113"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33740,
                                  "name": "needlelen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33721,
                                  "src": "17942:9:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 33741,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17954:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "17942:13:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33763,
                              "nodeType": "IfStatement",
                              "src": "17938:112:113",
                              "trueBody": {
                                "id": 33762,
                                "nodeType": "Block",
                                "src": "17957:93:113",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 33760,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 33743,
                                        "name": "mask",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33738,
                                        "src": "17980:4:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 33758,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "~",
                                            "prefix": true,
                                            "src": "17995:34:113",
                                            "subExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 33756,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 33754,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "hexValue": "32",
                                                      "id": 33746,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "17997:1:113",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                      },
                                                      "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "**",
                                                    "rightExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          },
                                                          "id": 33752,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "hexValue": "38",
                                                            "id": 33747,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "18003:1:113",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_8_by_1",
                                                              "typeString": "int_const 8"
                                                            },
                                                            "value": "8"
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "*",
                                                          "rightExpression": {
                                                            "components": [
                                                              {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                },
                                                                "id": 33750,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "hexValue": "3332",
                                                                  "id": 33748,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "kind": "number",
                                                                  "lValueRequested": false,
                                                                  "nodeType": "Literal",
                                                                  "src": "18008:2:113",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_32_by_1",
                                                                    "typeString": "int_const 32"
                                                                  },
                                                                  "value": "32"
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                  "id": 33749,
                                                                  "name": "needlelen",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 33721,
                                                                  "src": "18013:9:113",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                  }
                                                                },
                                                                "src": "18008:14:113",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              }
                                                            ],
                                                            "id": 33751,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "18007:16:113",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "src": "18003:20:113",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "id": 33753,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "18002:22:113",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "17997:27:113",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 33755,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "18027:1:113",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "17997:31:113",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 33757,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "17996:33:113",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 33745,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "17987:7:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 33744,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "17987:7:113",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 33759,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17987:43:113",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "17980:50:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 33761,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17980:50:113"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                33765
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33765,
                                  "mutability": "mutable",
                                  "name": "needledata",
                                  "nameLocation": "18078:10:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33799,
                                  "src": "18070:18:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33764,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18070:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33766,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18070:18:113"
                            },
                            {
                              "AST": {
                                "nativeSrc": "18116:45:113",
                                "nodeType": "YulBlock",
                                "src": "18116:45:113",
                                "statements": [
                                  {
                                    "nativeSrc": "18118:41:113",
                                    "nodeType": "YulAssignment",
                                    "src": "18118:41:113",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "needleptr",
                                              "nativeSrc": "18142:9:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "18142:9:113"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "18136:5:113",
                                            "nodeType": "YulIdentifier",
                                            "src": "18136:5:113"
                                          },
                                          "nativeSrc": "18136:16:113",
                                          "nodeType": "YulFunctionCall",
                                          "src": "18136:16:113"
                                        },
                                        {
                                          "name": "mask",
                                          "nativeSrc": "18154:4:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "18154:4:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nativeSrc": "18132:3:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "18132:3:113"
                                      },
                                      "nativeSrc": "18132:27:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18132:27:113"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "needledata",
                                        "nativeSrc": "18118:10:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "18118:10:113"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "prague",
                              "externalReferences": [
                                {
                                  "declaration": 33738,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18154:4:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33765,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18118:10:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33723,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18142:9:113",
                                  "valueSize": 1
                                }
                              ],
                              "id": 33767,
                              "nodeType": "InlineAssembly",
                              "src": "18107:54:113"
                            },
                            {
                              "expression": {
                                "id": 33774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 33768,
                                  "name": "ptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33729,
                                  "src": "18181:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 33773,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 33771,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 33769,
                                      "name": "selfptr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33719,
                                      "src": "18187:7:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "id": 33770,
                                      "name": "selflen",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 33717,
                                      "src": "18197:7:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "18187:17:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 33772,
                                    "name": "needlelen",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 33721,
                                    "src": "18207:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "18187:29:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18181:35:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 33775,
                              "nodeType": "ExpressionStatement",
                              "src": "18181:35:113"
                            },
                            {
                              "assignments": [
                                33777
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 33777,
                                  "mutability": "mutable",
                                  "name": "ptrdata",
                                  "nameLocation": "18243:7:113",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 33799,
                                  "src": "18235:15:113",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 33776,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18235:7:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 33778,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18235:15:113"
                            },
                            {
                              "AST": {
                                "nativeSrc": "18278:36:113",
                                "nodeType": "YulBlock",
                                "src": "18278:36:113",
                                "statements": [
                                  {
                                    "nativeSrc": "18280:32:113",
                                    "nodeType": "YulAssignment",
                                    "src": "18280:32:113",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nativeSrc": "18301:3:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "18301:3:113"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "18295:5:113",
                                            "nodeType": "YulIdentifier",
                                            "src": "18295:5:113"
                                          },
                                          "nativeSrc": "18295:10:113",
                                          "nodeType": "YulFunctionCall",
                                          "src": "18295:10:113"
                                        },
                                        {
                                          "name": "mask",
                                          "nativeSrc": "18307:4:113",
                                          "nodeType": "YulIdentifier",
                                          "src": "18307:4:113"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nativeSrc": "18291:3:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "18291:3:113"
                                      },
                                      "nativeSrc": "18291:21:113",
                                      "nodeType": "YulFunctionCall",
                                      "src": "18291:21:113"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "ptrdata",
                                        "nativeSrc": "18280:7:113",
                                        "nodeType": "YulIdentifier",
                                        "src": "18280:7:113"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "prague",
                              "externalReferences": [
                                {
                                  "declaration": 33738,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18307:4:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33729,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18301:3:113",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 33777,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "18280:7:113",
                                  "valueSize": 1
                                }
                              ],
                              "id": 33779,
                              "nodeType": "InlineAssembly",
                              "src": "18269:45:113"
                            },
                            {
                              "body": {
                                "id": 33793,
                                "nodeType": "Block",
                                "src": "18364:197:113",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 33785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 33783,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33729,
                                        "src": "18391:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "id": 33784,
                                        "name": "selfptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33719,
                                        "src": "18398:7:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "18391:14:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 33788,
                                    "nodeType": "IfStatement",
                                    "src": "18387:59:113",
                                    "trueBody": {
                                      "expression": {
                                        "id": 33786,
                                        "name": "selfptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33719,
                                        "src": "18439:7:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 33727,
                                      "id": 33787,
                                      "nodeType": "Return",
                                      "src": "18432:14:113"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 33790,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "--",
                                      "prefix": false,
                                      "src": "18469:5:113",
                                      "subExpression": {
                                        "id": 33789,
                                        "name": "ptr",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 33729,
                                        "src": "18469:3:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 33791,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18469:5:113"
                                  },
                                  {
                                    "AST": {
                                      "nativeSrc": "18506:36:113",
                                      "nodeType": "YulBlock",
                                      "src": "18506:36:113",
                                      "statements": [
                                        {
                                          "nativeSrc": "18508:32:113",
                                          "nodeType": "YulAssignment",
                                          "src": "18508:32:113",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "ptr",
                                                    "nativeSrc": "18529:3:113",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18529:3:113"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nativeSrc": "18523:5:113",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18523:5:113"
                                                },
                                                "nativeSrc": "18523:10:113",
                                                "nodeType": "YulFunctionCall",
                                                "src": "18523:10:113"
                                              },
                                              {
                                                "name": "mask",
                                                "nativeSrc": "18535:4:113",
                                                "nodeType": "YulIdentifier",
                                                "src": "18535:4:113"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nativeSrc": "18519:3:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "18519:3:113"
                                            },
                                            "nativeSrc": "18519:21:113",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18519:21:113"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "ptrdata",
                                              "nativeSrc": "18508:7:113",
                                              "nodeType": "YulIdentifier",
                                              "src": "18508:7:113"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "prague",
                                    "externalReferences": [
                                      {
                                        "declaration": 33738,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "18535:4:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33729,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "18529:3:113",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 33777,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "18508:7:113",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 33792,
                                    "nodeType": "InlineAssembly",
                                    "src": "18497:45:113"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 33782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33780,
                                  "name": "ptrdata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33777,
                                  "src": "18341:7:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 33781,
                                  "name": "needledata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33765,
                                  "src": "18352:10:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "18341:21:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 33794,
                              "nodeType": "WhileStatement",
                              "src": "18334:227:113"
                            },
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 33797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 33795,
                                  "name": "ptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33729,
                                  "src": "18586:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 33796,
                                  "name": "needlelen",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 33721,
                                  "src": "18592:9:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18586:15:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 33727,
                              "id": 33798,
                              "nodeType": "Return",
                              "src": "18579:22:113"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 33838,
                    "name": "selfptr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33719,
                    "src": "19169:7:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 33727,
                  "id": 33839,
                  "nodeType": "Return",
                  "src": "19162:14:113"
                }
              ]
            },
            "id": 33841,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rfindPtr",
            "nameLocation": "17697:8:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33724,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33717,
                  "mutability": "mutable",
                  "name": "selflen",
                  "nameLocation": "17711:7:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33841,
                  "src": "17706:12:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33716,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "17706:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33719,
                  "mutability": "mutable",
                  "name": "selfptr",
                  "nameLocation": "17725:7:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33841,
                  "src": "17720:12:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33718,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "17720:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33721,
                  "mutability": "mutable",
                  "name": "needlelen",
                  "nameLocation": "17739:9:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33841,
                  "src": "17734:14:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33720,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "17734:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33723,
                  "mutability": "mutable",
                  "name": "needleptr",
                  "nameLocation": "17755:9:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33841,
                  "src": "17750:14:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33722,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "17750:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17705:60:113"
            },
            "returnParameters": {
              "id": 33727,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33726,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33841,
                  "src": "17788:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33725,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "17788:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17787:6:113"
            },
            "scope": 34366,
            "src": "17688:1496:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 33883,
              "nodeType": "Block",
              "src": "19621:172:113",
              "statements": [
                {
                  "assignments": [
                    33854
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33854,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "19637:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33883,
                      "src": "19632:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33853,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "19632:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33865,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 33856,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33844,
                          "src": "19651:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33857,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19656:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "19651:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33858,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33844,
                          "src": "19662:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33859,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19667:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "19662:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33860,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33847,
                          "src": "19673:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33861,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19680:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "19673:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33862,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33847,
                          "src": "19686:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33863,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19693:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "19686:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33855,
                      "name": "findPtr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33715,
                      "src": "19643:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 33864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19643:55:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19632:66:113"
                },
                {
                  "expression": {
                    "id": 33873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33866,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33844,
                        "src": "19709:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33868,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "19714:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "19709:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 33869,
                        "name": "ptr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33854,
                        "src": "19722:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 33870,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33844,
                          "src": "19728:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33871,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "19733:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "19728:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "19722:15:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19709:28:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33874,
                  "nodeType": "ExpressionStatement",
                  "src": "19709:28:113"
                },
                {
                  "expression": {
                    "id": 33879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33875,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33844,
                        "src": "19748:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33877,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "19753:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "19748:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 33878,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33854,
                      "src": "19760:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19748:15:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33880,
                  "nodeType": "ExpressionStatement",
                  "src": "19748:15:113"
                },
                {
                  "expression": {
                    "id": 33881,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33844,
                    "src": "19781:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 33852,
                  "id": 33882,
                  "nodeType": "Return",
                  "src": "19774:11:113"
                }
              ]
            },
            "id": 33884,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "find",
            "nameLocation": "19539:4:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33844,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "19557:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33884,
                  "src": "19544:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33843,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33842,
                      "name": "Slice",
                      "nameLocations": [
                        "19544:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "19544:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "19544:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33847,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "19576:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33884,
                  "src": "19563:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33846,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33845,
                      "name": "Slice",
                      "nameLocations": [
                        "19563:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "19563:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "19563:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19543:40:113"
            },
            "returnParameters": {
              "id": 33852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33851,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33884,
                  "src": "19607:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33850,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33849,
                      "name": "Slice",
                      "nameLocations": [
                        "19607:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "19607:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "19607:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19606:14:113"
            },
            "scope": 34366,
            "src": "19530:263:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 33920,
              "nodeType": "Block",
              "src": "20254:146:113",
              "statements": [
                {
                  "assignments": [
                    33897
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33897,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "20270:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 33920,
                      "src": "20265:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33896,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20265:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33908,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 33899,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33887,
                          "src": "20285:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33900,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20290:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "20285:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33901,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33887,
                          "src": "20296:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33902,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20301:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "20296:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33903,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33890,
                          "src": "20307:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33904,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20314:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "20307:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33905,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33890,
                          "src": "20320:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33906,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20327:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "20320:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33898,
                      "name": "rfindPtr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33841,
                      "src": "20276:8:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 33907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20276:56:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20265:67:113"
                },
                {
                  "expression": {
                    "id": 33916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33909,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33887,
                        "src": "20343:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33911,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "20348:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "20343:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 33912,
                        "name": "ptr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33897,
                        "src": "20355:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 33913,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33887,
                          "src": "20361:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33914,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "20366:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "20361:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20355:15:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20343:27:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33917,
                  "nodeType": "ExpressionStatement",
                  "src": "20343:27:113"
                },
                {
                  "expression": {
                    "id": 33918,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33887,
                    "src": "20388:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 33895,
                  "id": 33919,
                  "nodeType": "Return",
                  "src": "20381:11:113"
                }
              ]
            },
            "id": 33921,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rfind",
            "nameLocation": "20171:5:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33891,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33887,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "20190:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33921,
                  "src": "20177:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33886,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33885,
                      "name": "Slice",
                      "nameLocations": [
                        "20177:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "20177:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "20177:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33890,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "20209:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 33921,
                  "src": "20196:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33889,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33888,
                      "name": "Slice",
                      "nameLocations": [
                        "20196:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "20196:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "20196:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20176:40:113"
            },
            "returnParameters": {
              "id": 33895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33894,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 33921,
                  "src": "20240:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33893,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33892,
                      "name": "Slice",
                      "nameLocations": [
                        "20240:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "20240:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "20240:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20239:14:113"
            },
            "scope": 34366,
            "src": "20162:238:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34002,
              "nodeType": "Block",
              "src": "21030:404:113",
              "statements": [
                {
                  "assignments": [
                    33937
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33937,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "21046:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34002,
                      "src": "21041:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33936,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21041:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33948,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 33939,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33924,
                          "src": "21060:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33940,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21065:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "21060:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33941,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33924,
                          "src": "21071:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33942,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21076:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "21071:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33943,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33927,
                          "src": "21082:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33944,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21089:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "21082:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33945,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33927,
                          "src": "21095:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33946,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21102:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "21095:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33938,
                      "name": "findPtr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33715,
                      "src": "21052:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 33947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21052:55:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21041:66:113"
                },
                {
                  "expression": {
                    "id": 33954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33949,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33930,
                        "src": "21118:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33951,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "21124:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "21118:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 33952,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33924,
                        "src": "21131:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33953,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "21136:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "21131:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21118:22:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33955,
                  "nodeType": "ExpressionStatement",
                  "src": "21118:22:113"
                },
                {
                  "expression": {
                    "id": 33963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33956,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33930,
                        "src": "21151:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 33958,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "21157:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "21151:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 33959,
                        "name": "ptr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33937,
                        "src": "21164:3:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 33960,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33924,
                          "src": "21170:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33961,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21175:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "21170:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "21164:15:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21151:28:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33964,
                  "nodeType": "ExpressionStatement",
                  "src": "21151:28:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33965,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33937,
                      "src": "21194:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 33970,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 33966,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33924,
                          "src": "21201:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33967,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21206:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "21201:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "expression": {
                          "id": 33968,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33924,
                          "src": "21213:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 33969,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "21218:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "21213:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "21201:21:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21194:28:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 33998,
                    "nodeType": "Block",
                    "src": "21296:108:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33979,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33924,
                              "src": "21311:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33981,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "21316:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "21311:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 33982,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33930,
                                "src": "21324:5:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 33983,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "21330:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "21324:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 33984,
                                "name": "needle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33927,
                                "src": "21337:6:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 33985,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "21344:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "21337:11:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "21324:24:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21311:37:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33988,
                        "nodeType": "ExpressionStatement",
                        "src": "21311:37:113"
                      },
                      {
                        "expression": {
                          "id": 33996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33989,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33924,
                              "src": "21363:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33991,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "21368:4:113",
                            "memberName": "_ptr",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32541,
                            "src": "21363:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 33992,
                              "name": "ptr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33937,
                              "src": "21375:3:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 33993,
                                "name": "needle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33927,
                                "src": "21381:6:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 33994,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "21388:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "21381:11:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "21375:17:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21363:29:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33997,
                        "nodeType": "ExpressionStatement",
                        "src": "21363:29:113"
                      }
                    ]
                  },
                  "id": 33999,
                  "nodeType": "IfStatement",
                  "src": "21190:214:113",
                  "trueBody": {
                    "id": 33978,
                    "nodeType": "Block",
                    "src": "21224:66:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 33976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 33972,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33924,
                              "src": "21265:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 33974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "21270:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "21265:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 33975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21277:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "21265:13:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33977,
                        "nodeType": "ExpressionStatement",
                        "src": "21265:13:113"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 34000,
                    "name": "token",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33930,
                    "src": "21421:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 33935,
                  "id": 34001,
                  "nodeType": "Return",
                  "src": "21414:12:113"
                }
              ]
            },
            "id": 34003,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "split",
            "nameLocation": "20927:5:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33924,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "20946:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "20933:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33923,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33922,
                      "name": "Slice",
                      "nameLocations": [
                        "20933:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "20933:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "20933:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33927,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "20965:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "20952:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33926,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33925,
                      "name": "Slice",
                      "nameLocations": [
                        "20952:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "20952:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "20952:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33930,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "20986:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "20973:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33929,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33928,
                      "name": "Slice",
                      "nameLocations": [
                        "20973:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "20973:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "20973:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20932:60:113"
            },
            "returnParameters": {
              "id": 33935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33934,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "21016:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 33933,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 33932,
                      "name": "Slice",
                      "nameLocations": [
                        "21016:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "21016:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "21016:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21015:14:113"
            },
            "scope": 34366,
            "src": "20918:516:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34021,
              "nodeType": "Block",
              "src": "22014:45:113",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 34016,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34006,
                        "src": "22031:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      {
                        "id": 34017,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34009,
                        "src": "22037:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      {
                        "id": 34018,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34013,
                        "src": "22045:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      ],
                      "id": 34015,
                      "name": "split",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        34003,
                        34022
                      ],
                      "referencedDeclaration": 34003,
                      "src": "22025:5:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$32542_memory_ptr_$_t_struct$_Slice_$32542_memory_ptr_$_t_struct$_Slice_$32542_memory_ptr_$returns$_t_struct$_Slice_$32542_memory_ptr_$",
                        "typeString": "function (struct Slices.Slice memory,struct Slices.Slice memory,struct Slices.Slice memory) pure returns (struct Slices.Slice memory)"
                      }
                    },
                    "id": 34019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22025:26:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "id": 34020,
                  "nodeType": "ExpressionStatement",
                  "src": "22025:26:113"
                }
              ]
            },
            "id": 34022,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "split",
            "nameLocation": "21925:5:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34006,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "21944:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34022,
                  "src": "21931:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34005,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34004,
                      "name": "Slice",
                      "nameLocations": [
                        "21931:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "21931:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "21931:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34009,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "21963:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34022,
                  "src": "21950:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34008,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34007,
                      "name": "Slice",
                      "nameLocations": [
                        "21950:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "21950:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "21950:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21930:40:113"
            },
            "returnParameters": {
              "id": 34014,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34013,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "22007:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34022,
                  "src": "21994:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34012,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34011,
                      "name": "Slice",
                      "nameLocations": [
                        "21994:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "21994:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "21994:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21993:20:113"
            },
            "scope": 34366,
            "src": "21916:143:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34094,
              "nodeType": "Block",
              "src": "22689:357:113",
              "statements": [
                {
                  "assignments": [
                    34038
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34038,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "22705:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34094,
                      "src": "22700:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34037,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "22700:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34049,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 34040,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34025,
                          "src": "22720:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34041,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22725:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "22720:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34042,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34025,
                          "src": "22731:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34043,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22736:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "22731:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34044,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34028,
                          "src": "22742:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34045,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22749:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "22742:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34046,
                          "name": "needle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34028,
                          "src": "22755:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34047,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22762:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "22755:11:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 34039,
                      "name": "rfindPtr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33841,
                      "src": "22711:8:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 34048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22711:56:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22700:67:113"
                },
                {
                  "expression": {
                    "id": 34054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 34050,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34031,
                        "src": "22778:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 34052,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "22784:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "22778:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 34053,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 34038,
                      "src": "22791:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22778:16:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 34055,
                  "nodeType": "ExpressionStatement",
                  "src": "22778:16:113"
                },
                {
                  "expression": {
                    "id": 34067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 34056,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34031,
                        "src": "22805:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 34058,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "22811:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "22805:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 34066,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 34059,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34025,
                          "src": "22818:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34060,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22823:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "22818:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 34064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 34061,
                              "name": "ptr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34038,
                              "src": "22831:3:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 34062,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34025,
                                "src": "22837:4:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 34063,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22842:4:113",
                              "memberName": "_ptr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32541,
                              "src": "22837:9:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "22831:15:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 34065,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "22830:17:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "22818:29:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22805:42:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 34068,
                  "nodeType": "ExpressionStatement",
                  "src": "22805:42:113"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 34069,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 34038,
                      "src": "22862:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "id": 34070,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34025,
                        "src": "22869:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 34071,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22874:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "22869:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22862:16:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 34090,
                    "nodeType": "Block",
                    "src": "22952:64:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 34088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 34080,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34025,
                              "src": "22967:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 34082,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22972:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "22967:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 34087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 34083,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34031,
                                "src": "22980:5:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 34084,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "22986:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "22980:10:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 34085,
                                "name": "needle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34028,
                                "src": "22993:6:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 34086,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "23000:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "22993:11:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "22980:24:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22967:37:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34089,
                        "nodeType": "ExpressionStatement",
                        "src": "22967:37:113"
                      }
                    ]
                  },
                  "id": 34091,
                  "nodeType": "IfStatement",
                  "src": "22858:158:113",
                  "trueBody": {
                    "id": 34079,
                    "nodeType": "Block",
                    "src": "22880:66:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 34077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 34073,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34025,
                              "src": "22921:4:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 34075,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "22926:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "22921:9:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 34076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22933:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "22921:13:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34078,
                        "nodeType": "ExpressionStatement",
                        "src": "22921:13:113"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 34092,
                    "name": "token",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 34031,
                    "src": "23033:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "functionReturnParameters": 34036,
                  "id": 34093,
                  "nodeType": "Return",
                  "src": "23026:12:113"
                }
              ]
            },
            "id": 34095,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rsplit",
            "nameLocation": "22585:6:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34025,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "22605:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34095,
                  "src": "22592:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34024,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34023,
                      "name": "Slice",
                      "nameLocations": [
                        "22592:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "22592:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "22592:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34028,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "22624:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34095,
                  "src": "22611:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34027,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34026,
                      "name": "Slice",
                      "nameLocations": [
                        "22611:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "22611:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "22611:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34031,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "22645:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34095,
                  "src": "22632:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34030,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34029,
                      "name": "Slice",
                      "nameLocations": [
                        "22632:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "22632:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "22632:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22591:60:113"
            },
            "returnParameters": {
              "id": 34036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34035,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 34095,
                  "src": "22675:12:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34034,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34033,
                      "name": "Slice",
                      "nameLocations": [
                        "22675:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "22675:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "22675:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22674:14:113"
            },
            "scope": 34366,
            "src": "22576:470:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34113,
              "nodeType": "Block",
              "src": "23625:46:113",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 34108,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34098,
                        "src": "23643:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      {
                        "id": 34109,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34101,
                        "src": "23649:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      {
                        "id": 34110,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34105,
                        "src": "23657:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      ],
                      "id": 34107,
                      "name": "rsplit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        34095,
                        34114
                      ],
                      "referencedDeclaration": 34095,
                      "src": "23636:6:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Slice_$32542_memory_ptr_$_t_struct$_Slice_$32542_memory_ptr_$_t_struct$_Slice_$32542_memory_ptr_$returns$_t_struct$_Slice_$32542_memory_ptr_$",
                        "typeString": "function (struct Slices.Slice memory,struct Slices.Slice memory,struct Slices.Slice memory) pure returns (struct Slices.Slice memory)"
                      }
                    },
                    "id": 34111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23636:27:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                      "typeString": "struct Slices.Slice memory"
                    }
                  },
                  "id": 34112,
                  "nodeType": "ExpressionStatement",
                  "src": "23636:27:113"
                }
              ]
            },
            "id": 34114,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rsplit",
            "nameLocation": "23535:6:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34098,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "23555:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34114,
                  "src": "23542:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34097,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34096,
                      "name": "Slice",
                      "nameLocations": [
                        "23542:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "23542:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "23542:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34101,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "23574:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34114,
                  "src": "23561:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34100,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34099,
                      "name": "Slice",
                      "nameLocations": [
                        "23561:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "23561:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "23561:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23541:40:113"
            },
            "returnParameters": {
              "id": 34106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34105,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "23618:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34114,
                  "src": "23605:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34104,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34103,
                      "name": "Slice",
                      "nameLocations": [
                        "23605:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "23605:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "23605:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23604:20:113"
            },
            "scope": 34366,
            "src": "23526:145:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34174,
              "nodeType": "Block",
              "src": "24036:282:113",
              "statements": [
                {
                  "assignments": [
                    34126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34126,
                      "mutability": "mutable",
                      "name": "ptr",
                      "nameLocation": "24052:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34174,
                      "src": "24047:8:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34125,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "24047:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34140,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 34128,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34117,
                            "src": "24066:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34129,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24071:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "24066:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 34130,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34117,
                            "src": "24077:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34131,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24082:4:113",
                          "memberName": "_ptr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32541,
                          "src": "24077:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 34132,
                            "name": "needle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34120,
                            "src": "24088:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34133,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24095:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "24088:11:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 34134,
                            "name": "needle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34120,
                            "src": "24101:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34135,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24108:4:113",
                          "memberName": "_ptr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32541,
                          "src": "24101:11:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 34127,
                        "name": "findPtr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33715,
                        "src": "24058:7:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 34136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24058:55:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "expression": {
                        "id": 34137,
                        "name": "needle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34120,
                        "src": "24116:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 34138,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "24123:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "24116:11:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24058:69:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24047:80:113"
                },
                {
                  "body": {
                    "id": 34172,
                    "nodeType": "Block",
                    "src": "24175:136:113",
                    "statements": [
                      {
                        "expression": {
                          "id": 34149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "24190:5:113",
                          "subExpression": {
                            "id": 34148,
                            "name": "cnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34123,
                            "src": "24190:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34150,
                        "nodeType": "ExpressionStatement",
                        "src": "24190:5:113"
                      },
                      {
                        "expression": {
                          "id": 34170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 34151,
                            "name": "ptr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34126,
                            "src": "24210:3:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 34169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 34160,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 34153,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34117,
                                      "src": "24224:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                        "typeString": "struct Slices.Slice memory"
                                      }
                                    },
                                    "id": 34154,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "24229:4:113",
                                    "memberName": "_len",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 32539,
                                    "src": "24224:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 34158,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 34155,
                                          "name": "ptr",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 34126,
                                          "src": "24237:3:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 34156,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 34117,
                                            "src": "24243:4:113",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                              "typeString": "struct Slices.Slice memory"
                                            }
                                          },
                                          "id": 34157,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "24248:4:113",
                                          "memberName": "_ptr",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 32541,
                                          "src": "24243:9:113",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24237:15:113",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 34159,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "24236:17:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24224:29:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 34161,
                                  "name": "ptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34126,
                                  "src": "24255:3:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 34162,
                                    "name": "needle",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34120,
                                    "src": "24260:6:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                      "typeString": "struct Slices.Slice memory"
                                    }
                                  },
                                  "id": 34163,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "24267:4:113",
                                  "memberName": "_len",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32539,
                                  "src": "24260:11:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 34164,
                                    "name": "needle",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34120,
                                    "src": "24273:6:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                      "typeString": "struct Slices.Slice memory"
                                    }
                                  },
                                  "id": 34165,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "24280:4:113",
                                  "memberName": "_ptr",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32541,
                                  "src": "24273:11:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 34152,
                                "name": "findPtr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33715,
                                "src": "24216:7:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 34166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24216:69:113",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "expression": {
                                "id": 34167,
                                "name": "needle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34120,
                                "src": "24288:6:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 34168,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "24295:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "24288:11:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "24216:83:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24210:89:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34171,
                        "nodeType": "ExpressionStatement",
                        "src": "24210:89:113"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 34141,
                      "name": "ptr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 34126,
                      "src": "24145:3:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 34146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 34142,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34117,
                          "src": "24152:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34143,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "24157:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "24152:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "expression": {
                          "id": 34144,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34117,
                          "src": "24164:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34145,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "24169:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "24164:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "24152:21:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24145:28:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 34173,
                  "nodeType": "WhileStatement",
                  "src": "24138:173:113"
                }
              ]
            },
            "id": 34175,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "count",
            "nameLocation": "23957:5:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34117,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "23976:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34175,
                  "src": "23963:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34116,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34115,
                      "name": "Slice",
                      "nameLocations": [
                        "23963:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "23963:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "23963:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34120,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "23995:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34175,
                  "src": "23982:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34119,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34118,
                      "name": "Slice",
                      "nameLocations": [
                        "23982:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "23982:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "23982:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23962:40:113"
            },
            "returnParameters": {
              "id": 34124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34123,
                  "mutability": "mutable",
                  "name": "cnt",
                  "nameLocation": "24031:3:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34175,
                  "src": "24026:8:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 34122,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24026:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24025:10:113"
            },
            "scope": 34366,
            "src": "23948:370:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34200,
              "nodeType": "Block",
              "src": "24652:95:113",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 34187,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34178,
                            "src": "24679:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34188,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24684:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "24679:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 34189,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34178,
                            "src": "24690:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34190,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24695:4:113",
                          "memberName": "_ptr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32541,
                          "src": "24690:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 34191,
                            "name": "needle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34181,
                            "src": "24701:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34192,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24708:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "24701:11:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 34193,
                            "name": "needle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34181,
                            "src": "24714:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34194,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24721:4:113",
                          "memberName": "_ptr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32541,
                          "src": "24714:11:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 34186,
                        "name": "rfindPtr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33841,
                        "src": "24670:8:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 34195,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "24670:56:113",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "expression": {
                        "id": 34196,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34178,
                        "src": "24730:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 34197,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "24735:4:113",
                      "memberName": "_ptr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32541,
                      "src": "24730:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24670:69:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 34185,
                  "id": 34199,
                  "nodeType": "Return",
                  "src": "24663:76:113"
                }
              ]
            },
            "id": 34201,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "24574:8:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34178,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "24596:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34201,
                  "src": "24583:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34177,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34176,
                      "name": "Slice",
                      "nameLocations": [
                        "24583:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "24583:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "24583:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34181,
                  "mutability": "mutable",
                  "name": "needle",
                  "nameLocation": "24615:6:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34201,
                  "src": "24602:19:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34180,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34179,
                      "name": "Slice",
                      "nameLocations": [
                        "24602:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "24602:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "24602:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24582:40:113"
            },
            "returnParameters": {
              "id": 34185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34184,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 34201,
                  "src": "24646:4:113",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 34183,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24646:4:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24645:6:113"
            },
            "scope": 34366,
            "src": "24565:182:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34248,
              "nodeType": "Block",
              "src": "25136:271:113",
              "statements": [
                {
                  "assignments": [
                    34213
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34213,
                      "mutability": "mutable",
                      "name": "ret",
                      "nameLocation": "25161:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34248,
                      "src": "25147:17:113",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 34212,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "25147:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34222,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 34220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 34216,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34204,
                            "src": "25178:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34217,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "25183:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "25178:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "expression": {
                            "id": 34218,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34207,
                            "src": "25190:5:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34219,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "25196:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "25190:10:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25178:22:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 34215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "25167:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (string memory)"
                      },
                      "typeName": {
                        "id": 34214,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "25171:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      }
                    },
                    "id": 34221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25167:34:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25147:54:113"
                },
                {
                  "assignments": [
                    34224
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34224,
                      "mutability": "mutable",
                      "name": "retptr",
                      "nameLocation": "25217:6:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34248,
                      "src": "25212:11:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34223,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25212:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34225,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25212:11:113"
                },
                {
                  "AST": {
                    "nativeSrc": "25243:26:113",
                    "nodeType": "YulBlock",
                    "src": "25243:26:113",
                    "statements": [
                      {
                        "nativeSrc": "25245:22:113",
                        "nodeType": "YulAssignment",
                        "src": "25245:22:113",
                        "value": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nativeSrc": "25259:3:113",
                              "nodeType": "YulIdentifier",
                              "src": "25259:3:113"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "25264:2:113",
                              "nodeType": "YulLiteral",
                              "src": "25264:2:113",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "25255:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "25255:3:113"
                          },
                          "nativeSrc": "25255:12:113",
                          "nodeType": "YulFunctionCall",
                          "src": "25255:12:113"
                        },
                        "variableNames": [
                          {
                            "name": "retptr",
                            "nativeSrc": "25245:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "25245:6:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 34213,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "25259:3:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 34224,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "25245:6:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 34226,
                  "nodeType": "InlineAssembly",
                  "src": "25234:35:113"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 34228,
                        "name": "retptr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34224,
                        "src": "25287:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34229,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34204,
                          "src": "25295:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34230,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25300:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "25295:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34231,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34204,
                          "src": "25306:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34232,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25311:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "25306:9:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 34227,
                      "name": "_memcpy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32595,
                      "src": "25279:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256) pure"
                      }
                    },
                    "id": 34233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25279:37:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 34234,
                  "nodeType": "ExpressionStatement",
                  "src": "25279:37:113"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 34239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 34236,
                          "name": "retptr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34224,
                          "src": "25335:6:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "expression": {
                            "id": 34237,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34204,
                            "src": "25344:4:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                              "typeString": "struct Slices.Slice memory"
                            }
                          },
                          "id": 34238,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "25349:4:113",
                          "memberName": "_len",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32539,
                          "src": "25344:9:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25335:18:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34240,
                          "name": "other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34207,
                          "src": "25355:5:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34241,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25361:4:113",
                        "memberName": "_ptr",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32541,
                        "src": "25355:10:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 34242,
                          "name": "other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 34207,
                          "src": "25367:5:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34243,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "25373:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "25367:10:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 34235,
                      "name": "_memcpy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32595,
                      "src": "25327:7:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256) pure"
                      }
                    },
                    "id": 34244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25327:51:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 34245,
                  "nodeType": "ExpressionStatement",
                  "src": "25327:51:113"
                },
                {
                  "expression": {
                    "id": 34246,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 34213,
                    "src": "25396:3:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 34211,
                  "id": 34247,
                  "nodeType": "Return",
                  "src": "25389:10:113"
                }
              ]
            },
            "id": 34249,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "concat",
            "nameLocation": "25052:6:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34208,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34204,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "25072:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34249,
                  "src": "25059:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34203,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34202,
                      "name": "Slice",
                      "nameLocations": [
                        "25059:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "25059:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "25059:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34207,
                  "mutability": "mutable",
                  "name": "other",
                  "nameLocation": "25091:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34249,
                  "src": "25078:18:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34206,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34205,
                      "name": "Slice",
                      "nameLocations": [
                        "25078:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "25078:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "25078:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25058:39:113"
            },
            "returnParameters": {
              "id": 34211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34210,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 34249,
                  "src": "25121:13:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 34209,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25121:6:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25120:15:113"
            },
            "scope": 34366,
            "src": "25043:364:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 34364,
              "nodeType": "Block",
              "src": "25846:659:113",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 34261,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34256,
                        "src": "25861:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Slices.Slice memory[] memory"
                        }
                      },
                      "id": 34262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25867:6:113",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "25861:12:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 34263,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25877:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "25861:17:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 34267,
                  "nodeType": "IfStatement",
                  "src": "25857:45:113",
                  "trueBody": {
                    "expression": {
                      "hexValue": "",
                      "id": 34265,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25900:2:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "functionReturnParameters": 34260,
                    "id": 34266,
                    "nodeType": "Return",
                    "src": "25893:9:113"
                  }
                },
                {
                  "assignments": [
                    34269
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34269,
                      "mutability": "mutable",
                      "name": "length",
                      "nameLocation": "25920:6:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34364,
                      "src": "25915:11:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34268,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25915:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34278,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 34270,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34252,
                        "src": "25929:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                          "typeString": "struct Slices.Slice memory"
                        }
                      },
                      "id": 34271,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25934:4:113",
                      "memberName": "_len",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32539,
                      "src": "25929:9:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 34272,
                              "name": "parts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34256,
                              "src": "25942:5:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Slices.Slice memory[] memory"
                              }
                            },
                            "id": 34273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25948:6:113",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "25942:12:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 34274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25957:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "25942:16:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 34276,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "25941:18:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25929:30:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25915:44:113"
                },
                {
                  "body": {
                    "expression": {
                      "id": 34295,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 34290,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34269,
                        "src": "26022:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "+=",
                      "rightHandSide": {
                        "expression": {
                          "baseExpression": {
                            "id": 34291,
                            "name": "parts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34256,
                            "src": "26032:5:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Slices.Slice memory[] memory"
                            }
                          },
                          "id": 34293,
                          "indexExpression": {
                            "id": 34292,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34280,
                            "src": "26038:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "26032:8:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                            "typeString": "struct Slices.Slice memory"
                          }
                        },
                        "id": 34294,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26041:4:113",
                        "memberName": "_len",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32539,
                        "src": "26032:13:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "26022:23:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 34296,
                    "nodeType": "ExpressionStatement",
                    "src": "26022:23:113"
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34286,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 34283,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 34280,
                      "src": "25986:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 34284,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34256,
                        "src": "25990:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Slices.Slice memory[] memory"
                        }
                      },
                      "id": 34285,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25996:6:113",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "25990:12:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25986:16:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 34297,
                  "initializationExpression": {
                    "assignments": [
                      34280
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 34280,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "25979:1:113",
                        "nodeType": "VariableDeclaration",
                        "scope": 34297,
                        "src": "25974:6:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34279,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25974:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 34282,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 34281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25983:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25974:10:113"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 34288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "26004:3:113",
                      "subExpression": {
                        "id": 34287,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34280,
                        "src": "26004:1:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 34289,
                    "nodeType": "ExpressionStatement",
                    "src": "26004:3:113"
                  },
                  "nodeType": "ForStatement",
                  "src": "25970:75:113"
                },
                {
                  "assignments": [
                    34299
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34299,
                      "mutability": "mutable",
                      "name": "ret",
                      "nameLocation": "26072:3:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34364,
                      "src": "26058:17:113",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 34298,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "26058:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34304,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 34302,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34269,
                        "src": "26089:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 34301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "26078:10:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (string memory)"
                      },
                      "typeName": {
                        "id": 34300,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "26082:6:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      }
                    },
                    "id": 34303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26078:18:113",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26058:38:113"
                },
                {
                  "assignments": [
                    34306
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 34306,
                      "mutability": "mutable",
                      "name": "retptr",
                      "nameLocation": "26112:6:113",
                      "nodeType": "VariableDeclaration",
                      "scope": 34364,
                      "src": "26107:11:113",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34305,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "26107:4:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 34307,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26107:11:113"
                },
                {
                  "AST": {
                    "nativeSrc": "26138:26:113",
                    "nodeType": "YulBlock",
                    "src": "26138:26:113",
                    "statements": [
                      {
                        "nativeSrc": "26140:22:113",
                        "nodeType": "YulAssignment",
                        "src": "26140:22:113",
                        "value": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nativeSrc": "26154:3:113",
                              "nodeType": "YulIdentifier",
                              "src": "26154:3:113"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "26159:2:113",
                              "nodeType": "YulLiteral",
                              "src": "26159:2:113",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "26150:3:113",
                            "nodeType": "YulIdentifier",
                            "src": "26150:3:113"
                          },
                          "nativeSrc": "26150:12:113",
                          "nodeType": "YulFunctionCall",
                          "src": "26150:12:113"
                        },
                        "variableNames": [
                          {
                            "name": "retptr",
                            "nativeSrc": "26140:6:113",
                            "nodeType": "YulIdentifier",
                            "src": "26140:6:113"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 34299,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "26154:3:113",
                      "valueSize": 1
                    },
                    {
                      "declaration": 34306,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "26140:6:113",
                      "valueSize": 1
                    }
                  ],
                  "id": 34308,
                  "nodeType": "InlineAssembly",
                  "src": "26129:35:113"
                },
                {
                  "body": {
                    "id": 34360,
                    "nodeType": "Block",
                    "src": "26215:260:113",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 34321,
                              "name": "retptr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 34306,
                              "src": "26238:6:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 34322,
                                  "name": "parts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34256,
                                  "src": "26246:5:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Slices.Slice memory[] memory"
                                  }
                                },
                                "id": 34324,
                                "indexExpression": {
                                  "id": 34323,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34310,
                                  "src": "26252:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "26246:8:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 34325,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26255:4:113",
                              "memberName": "_ptr",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32541,
                              "src": "26246:13:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 34326,
                                  "name": "parts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34256,
                                  "src": "26261:5:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Slices.Slice memory[] memory"
                                  }
                                },
                                "id": 34328,
                                "indexExpression": {
                                  "id": 34327,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34310,
                                  "src": "26267:1:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "26261:8:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                  "typeString": "struct Slices.Slice memory"
                                }
                              },
                              "id": 34329,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26270:4:113",
                              "memberName": "_len",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32539,
                              "src": "26261:13:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 34320,
                            "name": "_memcpy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32595,
                            "src": "26230:7:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256) pure"
                            }
                          },
                          "id": 34330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26230:45:113",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 34331,
                        "nodeType": "ExpressionStatement",
                        "src": "26230:45:113"
                      },
                      {
                        "expression": {
                          "id": 34337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 34332,
                            "name": "retptr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34306,
                            "src": "26290:6:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 34333,
                                "name": "parts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34256,
                                "src": "26300:5:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Slices.Slice memory[] memory"
                                }
                              },
                              "id": 34335,
                              "indexExpression": {
                                "id": 34334,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34310,
                                "src": "26306:1:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26300:8:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                "typeString": "struct Slices.Slice memory"
                              }
                            },
                            "id": 34336,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "26309:4:113",
                            "memberName": "_len",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32539,
                            "src": "26300:13:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26290:23:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 34338,
                        "nodeType": "ExpressionStatement",
                        "src": "26290:23:113"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 34344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 34339,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 34310,
                            "src": "26332:1:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 34343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 34340,
                                "name": "parts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34256,
                                "src": "26336:5:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Slices.Slice memory[] memory"
                                }
                              },
                              "id": 34341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "26342:6:113",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "26336:12:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 34342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26351:1:113",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "26336:16:113",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26332:20:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 34359,
                        "nodeType": "IfStatement",
                        "src": "26328:136:113",
                        "trueBody": {
                          "id": 34358,
                          "nodeType": "Block",
                          "src": "26354:110:113",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 34346,
                                    "name": "retptr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34306,
                                    "src": "26381:6:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 34347,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34252,
                                      "src": "26389:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                        "typeString": "struct Slices.Slice memory"
                                      }
                                    },
                                    "id": 34348,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "26394:4:113",
                                    "memberName": "_ptr",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 32541,
                                    "src": "26389:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 34349,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 34252,
                                      "src": "26400:4:113",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                        "typeString": "struct Slices.Slice memory"
                                      }
                                    },
                                    "id": 34350,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "26405:4:113",
                                    "memberName": "_len",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 32539,
                                    "src": "26400:9:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 34345,
                                  "name": "_memcpy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32595,
                                  "src": "26373:7:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256) pure"
                                  }
                                },
                                "id": 34351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26373:37:113",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 34352,
                              "nodeType": "ExpressionStatement",
                              "src": "26373:37:113"
                            },
                            {
                              "expression": {
                                "id": 34356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 34353,
                                  "name": "retptr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 34306,
                                  "src": "26429:6:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 34354,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 34252,
                                    "src": "26439:4:113",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                                      "typeString": "struct Slices.Slice memory"
                                    }
                                  },
                                  "id": 34355,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26444:4:113",
                                  "memberName": "_len",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32539,
                                  "src": "26439:9:113",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26429:19:113",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 34357,
                              "nodeType": "ExpressionStatement",
                              "src": "26429:19:113"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 34316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 34313,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 34310,
                      "src": "26192:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 34314,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34256,
                        "src": "26196:5:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Slices.Slice memory[] memory"
                        }
                      },
                      "id": 34315,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "26202:6:113",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "26196:12:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26192:16:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 34361,
                  "initializationExpression": {
                    "assignments": [
                      34310
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 34310,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "26185:1:113",
                        "nodeType": "VariableDeclaration",
                        "scope": 34361,
                        "src": "26180:6:113",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 34309,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26180:4:113",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 34312,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 34311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26189:1:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26180:10:113"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 34318,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "26210:3:113",
                      "subExpression": {
                        "id": 34317,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 34310,
                        "src": "26210:1:113",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 34319,
                    "nodeType": "ExpressionStatement",
                    "src": "26210:3:113"
                  },
                  "nodeType": "ForStatement",
                  "src": "26176:299:113"
                },
                {
                  "expression": {
                    "id": 34362,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 34299,
                    "src": "26494:3:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 34260,
                  "id": 34363,
                  "nodeType": "Return",
                  "src": "26487:10:113"
                }
              ]
            },
            "id": 34365,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "join",
            "nameLocation": "25762:4:113",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 34257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34252,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "25780:4:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34365,
                  "src": "25767:17:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Slice_$32542_memory_ptr",
                    "typeString": "struct Slices.Slice"
                  },
                  "typeName": {
                    "id": 34251,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 34250,
                      "name": "Slice",
                      "nameLocations": [
                        "25767:5:113"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 32542,
                      "src": "25767:5:113"
                    },
                    "referencedDeclaration": 32542,
                    "src": "25767:5:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                      "typeString": "struct Slices.Slice"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34256,
                  "mutability": "mutable",
                  "name": "parts",
                  "nameLocation": "25801:5:113",
                  "nodeType": "VariableDeclaration",
                  "scope": 34365,
                  "src": "25786:20:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Slice_$32542_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct Slices.Slice[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 34254,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 34253,
                        "name": "Slice",
                        "nameLocations": [
                          "25786:5:113"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 32542,
                        "src": "25786:5:113"
                      },
                      "referencedDeclaration": 32542,
                      "src": "25786:5:113",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Slice_$32542_storage_ptr",
                        "typeString": "struct Slices.Slice"
                      }
                    },
                    "id": 34255,
                    "nodeType": "ArrayTypeName",
                    "src": "25786:7:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Slice_$32542_storage_$dyn_storage_ptr",
                      "typeString": "struct Slices.Slice[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25766:41:113"
            },
            "returnParameters": {
              "id": 34260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 34259,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 34365,
                  "src": "25831:13:113",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 34258,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25831:6:113",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25830:15:113"
            },
            "scope": 34366,
            "src": "25753:752:113",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 34367,
        "src": "2090:24418:113",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "42:26466:113"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.960Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}