{
  "contractName": "ScriptHelpers",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_dest",
          "type": "uint256"
        },
        {
          "name": "_src",
          "type": "uint256"
        },
        {
          "name": "_len",
          "type": "uint256"
        }
      ],
      "name": "memcpy",
      "outputs": [],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_a",
          "type": "bytes"
        },
        {
          "name": "_b",
          "type": "bytes"
        },
        {
          "name": "_c",
          "type": "address[]"
        }
      ],
      "name": "abiEncode",
      "outputs": [
        {
          "name": "d",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b6103c38061001e6000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806311fe773d14610051578063137d70261461007b575b600080fd5b61007960048080359060200190919080359060200190919080359060200190919050506101c9565b005b61014e600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610224565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000808593508692508491505b6020821015156101fe57835183526020830192506020840193506020820391506101d9565b6001826020036101000a0390508019845116818451168181178552505050505050505050565b61022c610383565b610237848484610240565b90509392505050565b610248610383565b6000806000806060935061025b88610306565b6020028401925061026b87610306565b6020028301915061027b86610342565b60200282019050806040518059106102905750595b9080825280601f01601f191660200182016040525094508360208601528260408601528160608601526102ce856102c68a610350565b868b5161035a565b6102e3856102db89610350565b858a5161035a565b6102fb856102f088610379565b8460208a510261035a565b505050509392505050565b6000806020835181151561031657fe5b0611610323576000610326565b60015b60ff166020835181151561033657fe5b04600101019050919050565b600081516001019050919050565b6000819050919050565b600082602086010190506103728185602085016101c9565b5050505050565b6000819050919050565b6020604051908101604052806000815250905600a165627a7a72305820f5d5d3841d63f85f35ff713977d99a8cf601b0696f47df2aad5bc046fe2cd7180029",
  "deployedBytecode": "0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806311fe773d14610051578063137d70261461007b575b600080fd5b61007960048080359060200190919080359060200190919080359060200190919050506101c9565b005b61014e600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610224565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000808593508692508491505b6020821015156101fe57835183526020830192506020840193506020820391506101d9565b6001826020036101000a0390508019845116818451168181178552505050505050505050565b61022c610383565b610237848484610240565b90509392505050565b610248610383565b6000806000806060935061025b88610306565b6020028401925061026b87610306565b6020028301915061027b86610342565b60200282019050806040518059106102905750595b9080825280601f01601f191660200182016040525094508360208601528260408601528160608601526102ce856102c68a610350565b868b5161035a565b6102e3856102db89610350565b858a5161035a565b6102fb856102f088610379565b8460208a510261035a565b505050509392505050565b6000806020835181151561031657fe5b0611610323576000610326565b60015b60ff166020835181151561033657fe5b04600101019050919050565b600081516001019050919050565b6000819050919050565b600082602086010190506103728185602085016101c9565b5050505050565b6000819050919050565b6020604051908101604052806000815250905600a165627a7a72305820f5d5d3841d63f85f35ff713977d99a8cf601b0696f47df2aad5bc046fe2cd7180029",
  "sourceMap": "26:4554:32:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "26:4554:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3940:638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3940:638:32;4012:11;4040:12;4070:11;4356:9;4026:4;4012:18;;4055:5;4040:20;;4084:4;4070:18;;4149:165;4163:2;4156:3;:9;;4149:165;;;4238:3;4232:5;4226:4;4219:6;4278:2;4270:10;;;;4301:2;4294:9;;;;4174:2;4167:9;;;;4149:165;;;4388:1;4381:3;4376:2;:8;4368:3;:17;:21;4356:33;;4457:4;4453:3;4447;4441:5;4437:3;4509:4;4502;4496:5;4492:3;4553:7;4543:8;4540:2;4534:4;4527:6;4408:164;;;;;;;;;:::o;597:125::-;671:7;;:::i;:::-;697:18;704:2;708;712;697:6;:18::i;:::-;690:25;;597:125;;;;;:::o;728:830::-;822:14;;:::i;:::-;902:17;936;996;1056:14;922:4;902:24;;973:13;983:2;973:9;:13::i;:::-;968:2;:18;956:9;:30;936:50;;1033:13;1043:2;1033:9;:13::i;:::-;1028:2;:18;1016:9;:30;996:50;;1090:13;1100:2;1090:9;:13::i;:::-;1085:2;:18;1073:9;:30;1056:47;;1128:6;1118:17;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:21;;1220:9;1213:4;1210:1;1206:3;1199:6;1264:9;1257:4;1254:1;1250:3;1243:6;1308:9;1301:4;1298:1;1294:3;1287:6;1381:41;1386:1;1389:10;1396:2;1389:6;:10::i;:::-;1401:9;1412:2;:9;1381:4;:41::i;:::-;1432;1437:1;1440:10;1447:2;1440:6;:10::i;:::-;1452:9;1463:2;:9;1432:4;:41::i;:::-;1483:46;1488:1;1491:10;1498:2;1491:6;:10::i;:::-;1503:9;1526:2;1514;:9;:14;1483:4;:46::i;:::-;728:830;;;;;;;;;:::o;1564:236::-;1623:7;1783:1;1778:2;1766;:9;:14;;;;;;;;:18;:26;;1791:1;1766:26;;;1787:1;1766:26;1742:51;;1759:2;1747;:9;:14;;;;;;;;1742:1;:20;:51;1735:58;;1564:236;;;:::o;1806:139::-;1862:7;1929:2;:9;1925:1;:13;1918:20;;1806:139;;;:::o;2182:127::-;2238:11;2291:2;2284:9;;2270:33;;;:::o;1951:225::-;2044:9;2113:4;2106;2102:2;2098:3;2094;2086:32;;2137;2144:4;2150;2166:2;2156:7;:12;2137:6;:32::i;:::-;1951:225;;;;;:::o;2315:131::-;2375:11;2428:2;2421:9;;2407:33;;;:::o;26:4554::-;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.18;\n\n\nlibrary ScriptHelpers {\n    // To test with JS and compare with actual encoder. Maintaining for reference.\n    // t = function() { return IEVMScriptExecutor.at('0x4bcdd59d6c77774ee7317fc1095f69ec84421e49').contract.execScript.getData(...[].slice.call(arguments)).slice(10).match(/.{1,64}/g) }\n    // run = function() { return ScriptHelpers.new().then(sh => { sh.abiEncode.call(...[].slice.call(arguments)).then(a => console.log(a.slice(2).match(/.{1,64}/g)) ) }) }\n    // This is truly not beautiful but lets no daydream to the day solidity gets reflection features\n\n    function abiEncode(bytes _a, bytes _b, address[] _c) public pure returns (bytes d) {\n        return encode(_a, _b, _c);\n    }\n\n    function encode(bytes memory _a, bytes memory _b, address[] memory _c) internal pure returns (bytes memory d) {\n        // A is positioned after the 3 position words\n        uint256 aPosition = 0x60;\n        uint256 bPosition = aPosition + 32 * abiLength(_a);\n        uint256 cPosition = bPosition + 32 * abiLength(_b);\n        uint256 length = cPosition + 32 * abiLength(_c);\n\n        d = new bytes(length);\n        assembly {\n            // Store positions\n            mstore(add(d, 0x20), aPosition)\n            mstore(add(d, 0x40), bPosition)\n            mstore(add(d, 0x60), cPosition)\n        }\n\n        // Copy memory to correct position\n        copy(d, getPtr(_a), aPosition, _a.length);\n        copy(d, getPtr(_b), bPosition, _b.length);\n        copy(d, getPtr(_c), cPosition, _c.length * 32); // 1 word per address\n    }\n\n    function abiLength(bytes memory _a) internal pure returns (uint256) {\n        // 1 for length +\n        // memory words + 1 if not divisible for 32 to offset word\n        return 1 + (_a.length / 32) + (_a.length % 32 > 0 ? 1 : 0);\n    }\n\n    function abiLength(address[] _a) internal pure returns (uint256) {\n        // 1 for length + 1 per item\n        return 1 + _a.length;\n    }\n\n    function copy(bytes _d, uint256 _src, uint256 _pos, uint256 _length) internal pure {\n        uint dest;\n        assembly {\n            dest := add(add(_d, 0x20), _pos)\n        }\n        memcpy(dest, _src, _length + 32);\n    }\n\n    function getPtr(bytes memory _x) internal pure returns (uint256 ptr) {\n        assembly {\n            ptr := _x\n        }\n    }\n\n    function getPtr(address[] memory _x) internal pure returns (uint256 ptr) {\n        assembly {\n            ptr := _x\n        }\n    }\n\n    function getSpecId(bytes _script) internal pure returns (uint32) {\n        return uint32At(_script, 0);\n    }\n\n    function uint256At(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := mload(add(_data, add(0x20, _location)))\n        }\n    }\n\n    function addressAt(bytes _data, uint256 _location) internal pure returns (address result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000),\n            0x1000000000000000000000000)\n        }\n    }\n\n    function uint32At(bytes _data, uint256 _location) internal pure returns (uint32 result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000),\n            0x100000000000000000000000000000000000000000000000000000000)\n        }\n    }\n\n    function locationOf(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := add(_data, add(0x20, _location))\n        }\n    }\n\n    function toBytes(bytes4 _sig) internal pure returns (bytes) {\n        bytes memory payload = new bytes(4);\n        payload[0] = bytes1(_sig);\n        payload[1] = bytes1(_sig << 8);\n        payload[2] = bytes1(_sig << 16);\n        payload[3] = bytes1(_sig << 24);\n        return payload;\n    }\n\n    function memcpy(uint _dest, uint _src, uint _len) public pure {\n        uint256 src = _src;\n        uint256 dest = _dest;\n        uint256 len = _len;\n\n        // Copy word-length chunks while possible\n        for (; len >= 32; len -= 32) {\n            assembly {\n                mstore(dest, mload(src))\n            }\n            dest += 32;\n            src += 32;\n        }\n\n        // Copy remaining bytes\n        uint mask = 256 ** (32 - len) - 1;\n        assembly {\n            let srcpart := and(mload(src), not(mask))\n            let destpart := and(mload(dest), mask)\n            mstore(dest, or(destpart, srcpart))\n        }\n    }\n}",
  "sourcePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
      "exportedSymbols": {
        "ScriptHelpers": [
          8268
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 7899,
        "name": "PragmaDirective",
        "src": "0:23:32"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            8268
          ],
          "name": "ScriptHelpers",
          "scope": 8269
        },
        "children": [
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "abiEncode",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_a",
                      "scope": 7918,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 7900,
                        "name": "ElementaryTypeName",
                        "src": "616:5:32"
                      }
                    ],
                    "id": 7901,
                    "name": "VariableDeclaration",
                    "src": "616:8:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 7918,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 7902,
                        "name": "ElementaryTypeName",
                        "src": "626:5:32"
                      }
                    ],
                    "id": 7903,
                    "name": "VariableDeclaration",
                    "src": "626:8:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_c",
                      "scope": 7918,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 7904,
                            "name": "ElementaryTypeName",
                            "src": "636:7:32"
                          }
                        ],
                        "id": 7905,
                        "name": "ArrayTypeName",
                        "src": "636:9:32"
                      }
                    ],
                    "id": 7906,
                    "name": "VariableDeclaration",
                    "src": "636:12:32"
                  }
                ],
                "id": 7907,
                "name": "ParameterList",
                "src": "615:34:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "d",
                      "scope": 7918,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 7908,
                        "name": "ElementaryTypeName",
                        "src": "671:5:32"
                      }
                    ],
                    "id": 7909,
                    "name": "VariableDeclaration",
                    "src": "671:7:32"
                  }
                ],
                "id": 7910,
                "name": "ParameterList",
                "src": "670:9:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 7910
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8005,
                              "type": "function (bytes memory,bytes memory,address[] memory) pure returns (bytes memory)",
                              "value": "encode"
                            },
                            "id": 7911,
                            "name": "Identifier",
                            "src": "697:6:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7901,
                              "type": "bytes memory",
                              "value": "_a"
                            },
                            "id": 7912,
                            "name": "Identifier",
                            "src": "704:2:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7903,
                              "type": "bytes memory",
                              "value": "_b"
                            },
                            "id": 7913,
                            "name": "Identifier",
                            "src": "708:2:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7906,
                              "type": "address[] memory",
                              "value": "_c"
                            },
                            "id": 7914,
                            "name": "Identifier",
                            "src": "712:2:32"
                          }
                        ],
                        "id": 7915,
                        "name": "FunctionCall",
                        "src": "697:18:32"
                      }
                    ],
                    "id": 7916,
                    "name": "Return",
                    "src": "690:25:32"
                  }
                ],
                "id": 7917,
                "name": "Block",
                "src": "680:42:32"
              }
            ],
            "id": 7918,
            "name": "FunctionDefinition",
            "src": "597:125:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "encode",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_a",
                      "scope": 8005,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 7919,
                        "name": "ElementaryTypeName",
                        "src": "744:5:32"
                      }
                    ],
                    "id": 7920,
                    "name": "VariableDeclaration",
                    "src": "744:15:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_b",
                      "scope": 8005,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 7921,
                        "name": "ElementaryTypeName",
                        "src": "761:5:32"
                      }
                    ],
                    "id": 7922,
                    "name": "VariableDeclaration",
                    "src": "761:15:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_c",
                      "scope": 8005,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "address[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 7923,
                            "name": "ElementaryTypeName",
                            "src": "778:7:32"
                          }
                        ],
                        "id": 7924,
                        "name": "ArrayTypeName",
                        "src": "778:9:32"
                      }
                    ],
                    "id": 7925,
                    "name": "VariableDeclaration",
                    "src": "778:19:32"
                  }
                ],
                "id": 7926,
                "name": "ParameterList",
                "src": "743:55:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "d",
                      "scope": 8005,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 7927,
                        "name": "ElementaryTypeName",
                        "src": "822:5:32"
                      }
                    ],
                    "id": 7928,
                    "name": "VariableDeclaration",
                    "src": "822:14:32"
                  }
                ],
                "id": 7929,
                "name": "ParameterList",
                "src": "821:16:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        7931
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "aPosition",
                          "scope": 8005,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 7930,
                            "name": "ElementaryTypeName",
                            "src": "902:7:32"
                          }
                        ],
                        "id": 7931,
                        "name": "VariableDeclaration",
                        "src": "902:17:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30783630",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 96",
                          "value": "0x60"
                        },
                        "id": 7932,
                        "name": "Literal",
                        "src": "922:4:32"
                      }
                    ],
                    "id": 7933,
                    "name": "VariableDeclarationStatement",
                    "src": "902:24:32"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7935
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "bPosition",
                          "scope": 8005,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 7934,
                            "name": "ElementaryTypeName",
                            "src": "936:7:32"
                          }
                        ],
                        "id": 7935,
                        "name": "VariableDeclaration",
                        "src": "936:17:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7931,
                              "type": "uint256",
                              "value": "aPosition"
                            },
                            "id": 7936,
                            "name": "Identifier",
                            "src": "956:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 7937,
                                "name": "Literal",
                                "src": "968:2:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        8032,
                                        8046
                                      ],
                                      "referencedDeclaration": 8032,
                                      "type": "function (bytes memory) pure returns (uint256)",
                                      "value": "abiLength"
                                    },
                                    "id": 7938,
                                    "name": "Identifier",
                                    "src": "973:9:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7920,
                                      "type": "bytes memory",
                                      "value": "_a"
                                    },
                                    "id": 7939,
                                    "name": "Identifier",
                                    "src": "983:2:32"
                                  }
                                ],
                                "id": 7940,
                                "name": "FunctionCall",
                                "src": "973:13:32"
                              }
                            ],
                            "id": 7941,
                            "name": "BinaryOperation",
                            "src": "968:18:32"
                          }
                        ],
                        "id": 7942,
                        "name": "BinaryOperation",
                        "src": "956:30:32"
                      }
                    ],
                    "id": 7943,
                    "name": "VariableDeclarationStatement",
                    "src": "936:50:32"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7945
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "cPosition",
                          "scope": 8005,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 7944,
                            "name": "ElementaryTypeName",
                            "src": "996:7:32"
                          }
                        ],
                        "id": 7945,
                        "name": "VariableDeclaration",
                        "src": "996:17:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7935,
                              "type": "uint256",
                              "value": "bPosition"
                            },
                            "id": 7946,
                            "name": "Identifier",
                            "src": "1016:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 7947,
                                "name": "Literal",
                                "src": "1028:2:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        8032,
                                        8046
                                      ],
                                      "referencedDeclaration": 8032,
                                      "type": "function (bytes memory) pure returns (uint256)",
                                      "value": "abiLength"
                                    },
                                    "id": 7948,
                                    "name": "Identifier",
                                    "src": "1033:9:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7922,
                                      "type": "bytes memory",
                                      "value": "_b"
                                    },
                                    "id": 7949,
                                    "name": "Identifier",
                                    "src": "1043:2:32"
                                  }
                                ],
                                "id": 7950,
                                "name": "FunctionCall",
                                "src": "1033:13:32"
                              }
                            ],
                            "id": 7951,
                            "name": "BinaryOperation",
                            "src": "1028:18:32"
                          }
                        ],
                        "id": 7952,
                        "name": "BinaryOperation",
                        "src": "1016:30:32"
                      }
                    ],
                    "id": 7953,
                    "name": "VariableDeclarationStatement",
                    "src": "996:50:32"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7955
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "length",
                          "scope": 8005,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 7954,
                            "name": "ElementaryTypeName",
                            "src": "1056:7:32"
                          }
                        ],
                        "id": 7955,
                        "name": "VariableDeclaration",
                        "src": "1056:14:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7945,
                              "type": "uint256",
                              "value": "cPosition"
                            },
                            "id": 7956,
                            "name": "Identifier",
                            "src": "1073:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 7957,
                                "name": "Literal",
                                "src": "1085:2:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        8032,
                                        8046
                                      ],
                                      "referencedDeclaration": 8046,
                                      "type": "function (address[] memory) pure returns (uint256)",
                                      "value": "abiLength"
                                    },
                                    "id": 7958,
                                    "name": "Identifier",
                                    "src": "1090:9:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7925,
                                      "type": "address[] memory",
                                      "value": "_c"
                                    },
                                    "id": 7959,
                                    "name": "Identifier",
                                    "src": "1100:2:32"
                                  }
                                ],
                                "id": 7960,
                                "name": "FunctionCall",
                                "src": "1090:13:32"
                              }
                            ],
                            "id": 7961,
                            "name": "BinaryOperation",
                            "src": "1085:18:32"
                          }
                        ],
                        "id": 7962,
                        "name": "BinaryOperation",
                        "src": "1073:30:32"
                      }
                    ],
                    "id": 7963,
                    "name": "VariableDeclarationStatement",
                    "src": "1056:47:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7928,
                              "type": "bytes memory",
                              "value": "d"
                            },
                            "id": 7964,
                            "name": "Identifier",
                            "src": "1114:1:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "function (uint256) pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes",
                                      "type": "bytes storage pointer"
                                    },
                                    "id": 7965,
                                    "name": "ElementaryTypeName",
                                    "src": "1122:5:32"
                                  }
                                ],
                                "id": 7966,
                                "name": "NewExpression",
                                "src": "1118:9:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7955,
                                  "type": "uint256",
                                  "value": "length"
                                },
                                "id": 7967,
                                "name": "Identifier",
                                "src": "1128:6:32"
                              }
                            ],
                            "id": 7968,
                            "name": "FunctionCall",
                            "src": "1118:17:32"
                          }
                        ],
                        "id": 7969,
                        "name": "Assignment",
                        "src": "1114:21:32"
                      }
                    ],
                    "id": 7970,
                    "name": "ExpressionStatement",
                    "src": "1114:21:32"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "aPosition": {
                            "declaration": 7931,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1220:9:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "d": {
                            "declaration": 7928,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1210:1:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "bPosition": {
                            "declaration": 7935,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1264:9:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "d": {
                            "declaration": 7928,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1254:1:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "cPosition": {
                            "declaration": 7945,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1308:9:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "d": {
                            "declaration": 7928,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1298:1:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    mstore(add(d, 0x20), aPosition)\n    mstore(add(d, 0x40), bPosition)\n    mstore(add(d, 0x60), cPosition)\n}"
                    },
                    "children": [],
                    "id": 7971,
                    "name": "InlineAssembly",
                    "src": "1145:240:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8070,
                              "type": "function (bytes memory,uint256,uint256,uint256) pure",
                              "value": "copy"
                            },
                            "id": 7972,
                            "name": "Identifier",
                            "src": "1381:4:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7928,
                              "type": "bytes memory",
                              "value": "d"
                            },
                            "id": 7973,
                            "name": "Identifier",
                            "src": "1386:1:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    8079,
                                    8089
                                  ],
                                  "referencedDeclaration": 8079,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "getPtr"
                                },
                                "id": 7974,
                                "name": "Identifier",
                                "src": "1389:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7920,
                                  "type": "bytes memory",
                                  "value": "_a"
                                },
                                "id": 7975,
                                "name": "Identifier",
                                "src": "1396:2:32"
                              }
                            ],
                            "id": 7976,
                            "name": "FunctionCall",
                            "src": "1389:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7931,
                              "type": "uint256",
                              "value": "aPosition"
                            },
                            "id": 7977,
                            "name": "Identifier",
                            "src": "1401:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7920,
                                  "type": "bytes memory",
                                  "value": "_a"
                                },
                                "id": 7978,
                                "name": "Identifier",
                                "src": "1412:2:32"
                              }
                            ],
                            "id": 7979,
                            "name": "MemberAccess",
                            "src": "1412:9:32"
                          }
                        ],
                        "id": 7980,
                        "name": "FunctionCall",
                        "src": "1381:41:32"
                      }
                    ],
                    "id": 7981,
                    "name": "ExpressionStatement",
                    "src": "1381:41:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8070,
                              "type": "function (bytes memory,uint256,uint256,uint256) pure",
                              "value": "copy"
                            },
                            "id": 7982,
                            "name": "Identifier",
                            "src": "1432:4:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7928,
                              "type": "bytes memory",
                              "value": "d"
                            },
                            "id": 7983,
                            "name": "Identifier",
                            "src": "1437:1:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    8079,
                                    8089
                                  ],
                                  "referencedDeclaration": 8079,
                                  "type": "function (bytes memory) pure returns (uint256)",
                                  "value": "getPtr"
                                },
                                "id": 7984,
                                "name": "Identifier",
                                "src": "1440:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7922,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 7985,
                                "name": "Identifier",
                                "src": "1447:2:32"
                              }
                            ],
                            "id": 7986,
                            "name": "FunctionCall",
                            "src": "1440:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7935,
                              "type": "uint256",
                              "value": "bPosition"
                            },
                            "id": 7987,
                            "name": "Identifier",
                            "src": "1452:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7922,
                                  "type": "bytes memory",
                                  "value": "_b"
                                },
                                "id": 7988,
                                "name": "Identifier",
                                "src": "1463:2:32"
                              }
                            ],
                            "id": 7989,
                            "name": "MemberAccess",
                            "src": "1463:9:32"
                          }
                        ],
                        "id": 7990,
                        "name": "FunctionCall",
                        "src": "1432:41:32"
                      }
                    ],
                    "id": 7991,
                    "name": "ExpressionStatement",
                    "src": "1432:41:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8070,
                              "type": "function (bytes memory,uint256,uint256,uint256) pure",
                              "value": "copy"
                            },
                            "id": 7992,
                            "name": "Identifier",
                            "src": "1483:4:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7928,
                              "type": "bytes memory",
                              "value": "d"
                            },
                            "id": 7993,
                            "name": "Identifier",
                            "src": "1488:1:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    8079,
                                    8089
                                  ],
                                  "referencedDeclaration": 8089,
                                  "type": "function (address[] memory) pure returns (uint256)",
                                  "value": "getPtr"
                                },
                                "id": 7994,
                                "name": "Identifier",
                                "src": "1491:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7925,
                                  "type": "address[] memory",
                                  "value": "_c"
                                },
                                "id": 7995,
                                "name": "Identifier",
                                "src": "1498:2:32"
                              }
                            ],
                            "id": 7996,
                            "name": "FunctionCall",
                            "src": "1491:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7945,
                              "type": "uint256",
                              "value": "cPosition"
                            },
                            "id": 7997,
                            "name": "Identifier",
                            "src": "1503:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7925,
                                      "type": "address[] memory",
                                      "value": "_c"
                                    },
                                    "id": 7998,
                                    "name": "Identifier",
                                    "src": "1514:2:32"
                                  }
                                ],
                                "id": 7999,
                                "name": "MemberAccess",
                                "src": "1514:9:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 8000,
                                "name": "Literal",
                                "src": "1526:2:32"
                              }
                            ],
                            "id": 8001,
                            "name": "BinaryOperation",
                            "src": "1514:14:32"
                          }
                        ],
                        "id": 8002,
                        "name": "FunctionCall",
                        "src": "1483:46:32"
                      }
                    ],
                    "id": 8003,
                    "name": "ExpressionStatement",
                    "src": "1483:46:32"
                  }
                ],
                "id": 8004,
                "name": "Block",
                "src": "838:720:32"
              }
            ],
            "id": 8005,
            "name": "FunctionDefinition",
            "src": "728:830:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "abiLength",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_a",
                      "scope": 8032,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8006,
                        "name": "ElementaryTypeName",
                        "src": "1583:5:32"
                      }
                    ],
                    "id": 8007,
                    "name": "VariableDeclaration",
                    "src": "1583:15:32"
                  }
                ],
                "id": 8008,
                "name": "ParameterList",
                "src": "1582:17:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8032,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8009,
                        "name": "ElementaryTypeName",
                        "src": "1623:7:32"
                      }
                    ],
                    "id": 8010,
                    "name": "VariableDeclaration",
                    "src": "1623:7:32"
                  }
                ],
                "id": 8011,
                "name": "ParameterList",
                "src": "1622:9:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8011
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 8012,
                                "name": "Literal",
                                "src": "1742:1:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "/",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 8007,
                                              "type": "bytes memory",
                                              "value": "_a"
                                            },
                                            "id": 8013,
                                            "name": "Identifier",
                                            "src": "1747:2:32"
                                          }
                                        ],
                                        "id": 8014,
                                        "name": "MemberAccess",
                                        "src": "1747:9:32"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 8015,
                                        "name": "Literal",
                                        "src": "1759:2:32"
                                      }
                                    ],
                                    "id": 8016,
                                    "name": "BinaryOperation",
                                    "src": "1747:14:32"
                                  }
                                ],
                                "id": 8017,
                                "name": "TupleExpression",
                                "src": "1746:16:32"
                              }
                            ],
                            "id": 8018,
                            "name": "BinaryOperation",
                            "src": "1742:20:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": ">",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "%",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "length",
                                              "referencedDeclaration": null,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 8007,
                                                  "type": "bytes memory",
                                                  "value": "_a"
                                                },
                                                "id": 8019,
                                                "name": "Identifier",
                                                "src": "1766:2:32"
                                              }
                                            ],
                                            "id": 8020,
                                            "name": "MemberAccess",
                                            "src": "1766:9:32"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "3332",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 32",
                                              "value": "32"
                                            },
                                            "id": 8021,
                                            "name": "Literal",
                                            "src": "1778:2:32"
                                          }
                                        ],
                                        "id": 8022,
                                        "name": "BinaryOperation",
                                        "src": "1766:14:32"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 8023,
                                        "name": "Literal",
                                        "src": "1783:1:32"
                                      }
                                    ],
                                    "id": 8024,
                                    "name": "BinaryOperation",
                                    "src": "1766:18:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 8025,
                                    "name": "Literal",
                                    "src": "1787:1:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 8026,
                                    "name": "Literal",
                                    "src": "1791:1:32"
                                  }
                                ],
                                "id": 8027,
                                "name": "Conditional",
                                "src": "1766:26:32"
                              }
                            ],
                            "id": 8028,
                            "name": "TupleExpression",
                            "src": "1765:28:32"
                          }
                        ],
                        "id": 8029,
                        "name": "BinaryOperation",
                        "src": "1742:51:32"
                      }
                    ],
                    "id": 8030,
                    "name": "Return",
                    "src": "1735:58:32"
                  }
                ],
                "id": 8031,
                "name": "Block",
                "src": "1632:168:32"
              }
            ],
            "id": 8032,
            "name": "FunctionDefinition",
            "src": "1564:236:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "abiLength",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_a",
                      "scope": 8046,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 8033,
                            "name": "ElementaryTypeName",
                            "src": "1825:7:32"
                          }
                        ],
                        "id": 8034,
                        "name": "ArrayTypeName",
                        "src": "1825:9:32"
                      }
                    ],
                    "id": 8035,
                    "name": "VariableDeclaration",
                    "src": "1825:12:32"
                  }
                ],
                "id": 8036,
                "name": "ParameterList",
                "src": "1824:14:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8046,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8037,
                        "name": "ElementaryTypeName",
                        "src": "1862:7:32"
                      }
                    ],
                    "id": 8038,
                    "name": "VariableDeclaration",
                    "src": "1862:7:32"
                  }
                ],
                "id": 8039,
                "name": "ParameterList",
                "src": "1861:9:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8039
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 8040,
                            "name": "Literal",
                            "src": "1925:1:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8035,
                                  "type": "address[] memory",
                                  "value": "_a"
                                },
                                "id": 8041,
                                "name": "Identifier",
                                "src": "1929:2:32"
                              }
                            ],
                            "id": 8042,
                            "name": "MemberAccess",
                            "src": "1929:9:32"
                          }
                        ],
                        "id": 8043,
                        "name": "BinaryOperation",
                        "src": "1925:13:32"
                      }
                    ],
                    "id": 8044,
                    "name": "Return",
                    "src": "1918:20:32"
                  }
                ],
                "id": 8045,
                "name": "Block",
                "src": "1871:74:32"
              }
            ],
            "id": 8046,
            "name": "FunctionDefinition",
            "src": "1806:139:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "copy",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 8070,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8047,
                        "name": "ElementaryTypeName",
                        "src": "1965:5:32"
                      }
                    ],
                    "id": 8048,
                    "name": "VariableDeclaration",
                    "src": "1965:8:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_src",
                      "scope": 8070,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8049,
                        "name": "ElementaryTypeName",
                        "src": "1975:7:32"
                      }
                    ],
                    "id": 8050,
                    "name": "VariableDeclaration",
                    "src": "1975:12:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_pos",
                      "scope": 8070,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8051,
                        "name": "ElementaryTypeName",
                        "src": "1989:7:32"
                      }
                    ],
                    "id": 8052,
                    "name": "VariableDeclaration",
                    "src": "1989:12:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_length",
                      "scope": 8070,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8053,
                        "name": "ElementaryTypeName",
                        "src": "2003:7:32"
                      }
                    ],
                    "id": 8054,
                    "name": "VariableDeclaration",
                    "src": "2003:15:32"
                  }
                ],
                "id": 8055,
                "name": "ParameterList",
                "src": "1964:55:32"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8056,
                "name": "ParameterList",
                "src": "2034:0:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "dest",
                          "scope": 8070,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 8057,
                            "name": "ElementaryTypeName",
                            "src": "2044:4:32"
                          }
                        ],
                        "id": 8058,
                        "name": "VariableDeclaration",
                        "src": "2044:9:32"
                      }
                    ],
                    "id": 8059,
                    "name": "VariableDeclarationStatement",
                    "src": "2044:9:32"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "dest": {
                            "declaration": 8058,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2086:4:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "_pos": {
                            "declaration": 8052,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2113:4:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "_d": {
                            "declaration": 8048,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2102:2:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    dest := add(add(_d, 0x20), _pos)\n}"
                    },
                    "children": [],
                    "id": 8060,
                    "name": "InlineAssembly",
                    "src": "2063:80:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8267,
                              "type": "function (uint256,uint256,uint256) pure",
                              "value": "memcpy"
                            },
                            "id": 8061,
                            "name": "Identifier",
                            "src": "2137:6:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8058,
                              "type": "uint256",
                              "value": "dest"
                            },
                            "id": 8062,
                            "name": "Identifier",
                            "src": "2144:4:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8050,
                              "type": "uint256",
                              "value": "_src"
                            },
                            "id": 8063,
                            "name": "Identifier",
                            "src": "2150:4:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8054,
                                  "type": "uint256",
                                  "value": "_length"
                                },
                                "id": 8064,
                                "name": "Identifier",
                                "src": "2156:7:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 8065,
                                "name": "Literal",
                                "src": "2166:2:32"
                              }
                            ],
                            "id": 8066,
                            "name": "BinaryOperation",
                            "src": "2156:12:32"
                          }
                        ],
                        "id": 8067,
                        "name": "FunctionCall",
                        "src": "2137:32:32"
                      }
                    ],
                    "id": 8068,
                    "name": "ExpressionStatement",
                    "src": "2137:32:32"
                  }
                ],
                "id": 8069,
                "name": "Block",
                "src": "2034:142:32"
              }
            ],
            "id": 8070,
            "name": "FunctionDefinition",
            "src": "1951:225:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getPtr",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_x",
                      "scope": 8079,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8071,
                        "name": "ElementaryTypeName",
                        "src": "2198:5:32"
                      }
                    ],
                    "id": 8072,
                    "name": "VariableDeclaration",
                    "src": "2198:15:32"
                  }
                ],
                "id": 8073,
                "name": "ParameterList",
                "src": "2197:17:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "ptr",
                      "scope": 8079,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8074,
                        "name": "ElementaryTypeName",
                        "src": "2238:7:32"
                      }
                    ],
                    "id": 8075,
                    "name": "VariableDeclaration",
                    "src": "2238:11:32"
                  }
                ],
                "id": 8076,
                "name": "ParameterList",
                "src": "2237:13:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "_x": {
                            "declaration": 8072,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2291:2:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "ptr": {
                            "declaration": 8075,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2284:3:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    ptr := _x\n}"
                    },
                    "children": [],
                    "id": 8077,
                    "name": "InlineAssembly",
                    "src": "2261:48:32"
                  }
                ],
                "id": 8078,
                "name": "Block",
                "src": "2251:58:32"
              }
            ],
            "id": 8079,
            "name": "FunctionDefinition",
            "src": "2182:127:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getPtr",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_x",
                      "scope": 8089,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "address[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 8080,
                            "name": "ElementaryTypeName",
                            "src": "2331:7:32"
                          }
                        ],
                        "id": 8081,
                        "name": "ArrayTypeName",
                        "src": "2331:9:32"
                      }
                    ],
                    "id": 8082,
                    "name": "VariableDeclaration",
                    "src": "2331:19:32"
                  }
                ],
                "id": 8083,
                "name": "ParameterList",
                "src": "2330:21:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "ptr",
                      "scope": 8089,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8084,
                        "name": "ElementaryTypeName",
                        "src": "2375:7:32"
                      }
                    ],
                    "id": 8085,
                    "name": "VariableDeclaration",
                    "src": "2375:11:32"
                  }
                ],
                "id": 8086,
                "name": "ParameterList",
                "src": "2374:13:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "_x": {
                            "declaration": 8082,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2428:2:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "ptr": {
                            "declaration": 8085,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2421:3:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    ptr := _x\n}"
                    },
                    "children": [],
                    "id": 8087,
                    "name": "InlineAssembly",
                    "src": "2398:48:32"
                  }
                ],
                "id": 8088,
                "name": "Block",
                "src": "2388:58:32"
              }
            ],
            "id": 8089,
            "name": "FunctionDefinition",
            "src": "2315:131:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSpecId",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_script",
                      "scope": 8102,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8090,
                        "name": "ElementaryTypeName",
                        "src": "2471:5:32"
                      }
                    ],
                    "id": 8091,
                    "name": "VariableDeclaration",
                    "src": "2471:13:32"
                  }
                ],
                "id": 8092,
                "name": "ParameterList",
                "src": "2470:15:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8102,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 8093,
                        "name": "ElementaryTypeName",
                        "src": "2509:6:32"
                      }
                    ],
                    "id": 8094,
                    "name": "VariableDeclaration",
                    "src": "2509:6:32"
                  }
                ],
                "id": 8095,
                "name": "ParameterList",
                "src": "2508:8:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 8095
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8149,
                              "type": "function (bytes memory,uint256) pure returns (uint32)",
                              "value": "uint32At"
                            },
                            "id": 8096,
                            "name": "Identifier",
                            "src": "2534:8:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8091,
                              "type": "bytes memory",
                              "value": "_script"
                            },
                            "id": 8097,
                            "name": "Identifier",
                            "src": "2543:7:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 8098,
                            "name": "Literal",
                            "src": "2552:1:32"
                          }
                        ],
                        "id": 8099,
                        "name": "FunctionCall",
                        "src": "2534:20:32"
                      }
                    ],
                    "id": 8100,
                    "name": "Return",
                    "src": "2527:27:32"
                  }
                ],
                "id": 8101,
                "name": "Block",
                "src": "2517:44:32"
              }
            ],
            "id": 8102,
            "name": "FunctionDefinition",
            "src": "2452:109:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "uint256At",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_data",
                      "scope": 8113,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8103,
                        "name": "ElementaryTypeName",
                        "src": "2586:5:32"
                      }
                    ],
                    "id": 8104,
                    "name": "VariableDeclaration",
                    "src": "2586:11:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_location",
                      "scope": 8113,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8105,
                        "name": "ElementaryTypeName",
                        "src": "2599:7:32"
                      }
                    ],
                    "id": 8106,
                    "name": "VariableDeclaration",
                    "src": "2599:17:32"
                  }
                ],
                "id": 8107,
                "name": "ParameterList",
                "src": "2585:32:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "result",
                      "scope": 8113,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8108,
                        "name": "ElementaryTypeName",
                        "src": "2641:7:32"
                      }
                    ],
                    "id": 8109,
                    "name": "VariableDeclaration",
                    "src": "2641:14:32"
                  }
                ],
                "id": 8110,
                "name": "ParameterList",
                "src": "2640:16:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "result": {
                            "declaration": 8109,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2690:6:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "_data": {
                            "declaration": 8104,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2710:5:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "_location": {
                            "declaration": 8106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2727:9:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}"
                    },
                    "children": [],
                    "id": 8111,
                    "name": "InlineAssembly",
                    "src": "2667:88:32"
                  }
                ],
                "id": 8112,
                "name": "Block",
                "src": "2657:98:32"
              }
            ],
            "id": 8113,
            "name": "FunctionDefinition",
            "src": "2567:188:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "addressAt",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_data",
                      "scope": 8131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8114,
                        "name": "ElementaryTypeName",
                        "src": "2780:5:32"
                      }
                    ],
                    "id": 8115,
                    "name": "VariableDeclaration",
                    "src": "2780:11:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_location",
                      "scope": 8131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8116,
                        "name": "ElementaryTypeName",
                        "src": "2793:7:32"
                      }
                    ],
                    "id": 8117,
                    "name": "VariableDeclaration",
                    "src": "2793:17:32"
                  }
                ],
                "id": 8118,
                "name": "ParameterList",
                "src": "2779:32:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "result",
                      "scope": 8131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 8119,
                        "name": "ElementaryTypeName",
                        "src": "2835:7:32"
                      }
                    ],
                    "id": 8120,
                    "name": "VariableDeclaration",
                    "src": "2835:14:32"
                  }
                ],
                "id": 8121,
                "name": "ParameterList",
                "src": "2834:16:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        8123
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "word",
                          "scope": 8131,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8122,
                            "name": "ElementaryTypeName",
                            "src": "2861:7:32"
                          }
                        ],
                        "id": 8123,
                        "name": "VariableDeclaration",
                        "src": "2861:12:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8113,
                              "type": "function (bytes memory,uint256) pure returns (uint256)",
                              "value": "uint256At"
                            },
                            "id": 8124,
                            "name": "Identifier",
                            "src": "2876:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8115,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 8125,
                            "name": "Identifier",
                            "src": "2886:5:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8117,
                              "type": "uint256",
                              "value": "_location"
                            },
                            "id": 8126,
                            "name": "Identifier",
                            "src": "2893:9:32"
                          }
                        ],
                        "id": 8127,
                        "name": "FunctionCall",
                        "src": "2876:27:32"
                      }
                    ],
                    "id": 8128,
                    "name": "VariableDeclarationStatement",
                    "src": "2861:42:32"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "result": {
                            "declaration": 8120,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2937:6:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "word": {
                            "declaration": 8123,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2955:4:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}"
                    },
                    "children": [],
                    "id": 8129,
                    "name": "InlineAssembly",
                    "src": "2914:172:32"
                  }
                ],
                "id": 8130,
                "name": "Block",
                "src": "2851:235:32"
              }
            ],
            "id": 8131,
            "name": "FunctionDefinition",
            "src": "2761:325:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "uint32At",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_data",
                      "scope": 8149,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8132,
                        "name": "ElementaryTypeName",
                        "src": "3110:5:32"
                      }
                    ],
                    "id": 8133,
                    "name": "VariableDeclaration",
                    "src": "3110:11:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_location",
                      "scope": 8149,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8134,
                        "name": "ElementaryTypeName",
                        "src": "3123:7:32"
                      }
                    ],
                    "id": 8135,
                    "name": "VariableDeclaration",
                    "src": "3123:17:32"
                  }
                ],
                "id": 8136,
                "name": "ParameterList",
                "src": "3109:32:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "result",
                      "scope": 8149,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 8137,
                        "name": "ElementaryTypeName",
                        "src": "3165:6:32"
                      }
                    ],
                    "id": 8138,
                    "name": "VariableDeclaration",
                    "src": "3165:13:32"
                  }
                ],
                "id": 8139,
                "name": "ParameterList",
                "src": "3164:15:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        8141
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "word",
                          "scope": 8149,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8140,
                            "name": "ElementaryTypeName",
                            "src": "3190:7:32"
                          }
                        ],
                        "id": 8141,
                        "name": "VariableDeclaration",
                        "src": "3190:12:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8113,
                              "type": "function (bytes memory,uint256) pure returns (uint256)",
                              "value": "uint256At"
                            },
                            "id": 8142,
                            "name": "Identifier",
                            "src": "3205:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8133,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 8143,
                            "name": "Identifier",
                            "src": "3215:5:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8135,
                              "type": "uint256",
                              "value": "_location"
                            },
                            "id": 8144,
                            "name": "Identifier",
                            "src": "3222:9:32"
                          }
                        ],
                        "id": 8145,
                        "name": "FunctionCall",
                        "src": "3205:27:32"
                      }
                    ],
                    "id": 8146,
                    "name": "VariableDeclarationStatement",
                    "src": "3190:42:32"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "result": {
                            "declaration": 8138,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3266:6:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "word": {
                            "declaration": 8141,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3284:4:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}"
                    },
                    "children": [],
                    "id": 8147,
                    "name": "InlineAssembly",
                    "src": "3243:204:32"
                  }
                ],
                "id": 8148,
                "name": "Block",
                "src": "3180:267:32"
              }
            ],
            "id": 8149,
            "name": "FunctionDefinition",
            "src": "3092:355:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "locationOf",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_data",
                      "scope": 8160,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8150,
                        "name": "ElementaryTypeName",
                        "src": "3473:5:32"
                      }
                    ],
                    "id": 8151,
                    "name": "VariableDeclaration",
                    "src": "3473:11:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_location",
                      "scope": 8160,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8152,
                        "name": "ElementaryTypeName",
                        "src": "3486:7:32"
                      }
                    ],
                    "id": 8153,
                    "name": "VariableDeclaration",
                    "src": "3486:17:32"
                  }
                ],
                "id": 8154,
                "name": "ParameterList",
                "src": "3472:32:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "result",
                      "scope": 8160,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 8155,
                        "name": "ElementaryTypeName",
                        "src": "3528:7:32"
                      }
                    ],
                    "id": 8156,
                    "name": "VariableDeclaration",
                    "src": "3528:14:32"
                  }
                ],
                "id": 8157,
                "name": "ParameterList",
                "src": "3527:16:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "result": {
                            "declaration": 8156,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3577:6:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "_data": {
                            "declaration": 8151,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3591:5:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "_location": {
                            "declaration": 8153,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3608:9:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    result := add(_data, add(0x20, _location))\n}"
                    },
                    "children": [],
                    "id": 8158,
                    "name": "InlineAssembly",
                    "src": "3554:81:32"
                  }
                ],
                "id": 8159,
                "name": "Block",
                "src": "3544:91:32"
              }
            ],
            "id": 8160,
            "name": "FunctionDefinition",
            "src": "3453:182:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "toBytes",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_sig",
                      "scope": 8215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 8161,
                        "name": "ElementaryTypeName",
                        "src": "3658:6:32"
                      }
                    ],
                    "id": 8162,
                    "name": "VariableDeclaration",
                    "src": "3658:11:32"
                  }
                ],
                "id": 8163,
                "name": "ParameterList",
                "src": "3657:13:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 8215,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 8164,
                        "name": "ElementaryTypeName",
                        "src": "3694:5:32"
                      }
                    ],
                    "id": 8165,
                    "name": "VariableDeclaration",
                    "src": "3694:5:32"
                  }
                ],
                "id": 8166,
                "name": "ParameterList",
                "src": "3693:7:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        8168
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "payload",
                          "scope": 8215,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes storage pointer"
                            },
                            "id": 8167,
                            "name": "ElementaryTypeName",
                            "src": "3711:5:32"
                          }
                        ],
                        "id": 8168,
                        "name": "VariableDeclaration",
                        "src": "3711:20:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "bytes",
                                  "type": "bytes storage pointer"
                                },
                                "id": 8169,
                                "name": "ElementaryTypeName",
                                "src": "3738:5:32"
                              }
                            ],
                            "id": 8170,
                            "name": "NewExpression",
                            "src": "3734:9:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 8171,
                            "name": "Literal",
                            "src": "3744:1:32"
                          }
                        ],
                        "id": 8172,
                        "name": "FunctionCall",
                        "src": "3734:12:32"
                      }
                    ],
                    "id": 8173,
                    "name": "VariableDeclarationStatement",
                    "src": "3711:35:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes1"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bytes1"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8168,
                                  "type": "bytes memory",
                                  "value": "payload"
                                },
                                "id": 8174,
                                "name": "Identifier",
                                "src": "3756:7:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 8175,
                                "name": "Literal",
                                "src": "3764:1:32"
                              }
                            ],
                            "id": 8176,
                            "name": "IndexAccess",
                            "src": "3756:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes1",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes1)",
                                  "value": "bytes1"
                                },
                                "id": 8177,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3769:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8162,
                                  "type": "bytes4",
                                  "value": "_sig"
                                },
                                "id": 8178,
                                "name": "Identifier",
                                "src": "3776:4:32"
                              }
                            ],
                            "id": 8179,
                            "name": "FunctionCall",
                            "src": "3769:12:32"
                          }
                        ],
                        "id": 8180,
                        "name": "Assignment",
                        "src": "3756:25:32"
                      }
                    ],
                    "id": 8181,
                    "name": "ExpressionStatement",
                    "src": "3756:25:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes1"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bytes1"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8168,
                                  "type": "bytes memory",
                                  "value": "payload"
                                },
                                "id": 8182,
                                "name": "Identifier",
                                "src": "3791:7:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 8183,
                                "name": "Literal",
                                "src": "3799:1:32"
                              }
                            ],
                            "id": 8184,
                            "name": "IndexAccess",
                            "src": "3791:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes1",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes1)",
                                  "value": "bytes1"
                                },
                                "id": 8185,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3804:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8162,
                                      "type": "bytes4",
                                      "value": "_sig"
                                    },
                                    "id": 8186,
                                    "name": "Identifier",
                                    "src": "3811:4:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 8187,
                                    "name": "Literal",
                                    "src": "3819:1:32"
                                  }
                                ],
                                "id": 8188,
                                "name": "BinaryOperation",
                                "src": "3811:9:32"
                              }
                            ],
                            "id": 8189,
                            "name": "FunctionCall",
                            "src": "3804:17:32"
                          }
                        ],
                        "id": 8190,
                        "name": "Assignment",
                        "src": "3791:30:32"
                      }
                    ],
                    "id": 8191,
                    "name": "ExpressionStatement",
                    "src": "3791:30:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes1"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bytes1"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8168,
                                  "type": "bytes memory",
                                  "value": "payload"
                                },
                                "id": 8192,
                                "name": "Identifier",
                                "src": "3831:7:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 8193,
                                "name": "Literal",
                                "src": "3839:1:32"
                              }
                            ],
                            "id": 8194,
                            "name": "IndexAccess",
                            "src": "3831:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes1",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes1)",
                                  "value": "bytes1"
                                },
                                "id": 8195,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3844:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8162,
                                      "type": "bytes4",
                                      "value": "_sig"
                                    },
                                    "id": 8196,
                                    "name": "Identifier",
                                    "src": "3851:4:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3136",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 16",
                                      "value": "16"
                                    },
                                    "id": 8197,
                                    "name": "Literal",
                                    "src": "3859:2:32"
                                  }
                                ],
                                "id": 8198,
                                "name": "BinaryOperation",
                                "src": "3851:10:32"
                              }
                            ],
                            "id": 8199,
                            "name": "FunctionCall",
                            "src": "3844:18:32"
                          }
                        ],
                        "id": 8200,
                        "name": "Assignment",
                        "src": "3831:31:32"
                      }
                    ],
                    "id": 8201,
                    "name": "ExpressionStatement",
                    "src": "3831:31:32"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes1"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bytes1"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8168,
                                  "type": "bytes memory",
                                  "value": "payload"
                                },
                                "id": 8202,
                                "name": "Identifier",
                                "src": "3872:7:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "33",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 3",
                                  "value": "3"
                                },
                                "id": 8203,
                                "name": "Literal",
                                "src": "3880:1:32"
                              }
                            ],
                            "id": 8204,
                            "name": "IndexAccess",
                            "src": "3872:10:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes1",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes1)",
                                  "value": "bytes1"
                                },
                                "id": 8205,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3885:6:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8162,
                                      "type": "bytes4",
                                      "value": "_sig"
                                    },
                                    "id": 8206,
                                    "name": "Identifier",
                                    "src": "3892:4:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3234",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 24",
                                      "value": "24"
                                    },
                                    "id": 8207,
                                    "name": "Literal",
                                    "src": "3900:2:32"
                                  }
                                ],
                                "id": 8208,
                                "name": "BinaryOperation",
                                "src": "3892:10:32"
                              }
                            ],
                            "id": 8209,
                            "name": "FunctionCall",
                            "src": "3885:18:32"
                          }
                        ],
                        "id": 8210,
                        "name": "Assignment",
                        "src": "3872:31:32"
                      }
                    ],
                    "id": 8211,
                    "name": "ExpressionStatement",
                    "src": "3872:31:32"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 8166
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 8168,
                          "type": "bytes memory",
                          "value": "payload"
                        },
                        "id": 8212,
                        "name": "Identifier",
                        "src": "3920:7:32"
                      }
                    ],
                    "id": 8213,
                    "name": "Return",
                    "src": "3913:14:32"
                  }
                ],
                "id": 8214,
                "name": "Block",
                "src": "3701:233:32"
              }
            ],
            "id": 8215,
            "name": "FunctionDefinition",
            "src": "3641:293:32"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "memcpy",
              "payable": false,
              "scope": 8268,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dest",
                      "scope": 8267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 8216,
                        "name": "ElementaryTypeName",
                        "src": "3956:4:32"
                      }
                    ],
                    "id": 8217,
                    "name": "VariableDeclaration",
                    "src": "3956:10:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_src",
                      "scope": 8267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 8218,
                        "name": "ElementaryTypeName",
                        "src": "3968:4:32"
                      }
                    ],
                    "id": 8219,
                    "name": "VariableDeclaration",
                    "src": "3968:9:32"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_len",
                      "scope": 8267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 8220,
                        "name": "ElementaryTypeName",
                        "src": "3979:4:32"
                      }
                    ],
                    "id": 8221,
                    "name": "VariableDeclaration",
                    "src": "3979:9:32"
                  }
                ],
                "id": 8222,
                "name": "ParameterList",
                "src": "3955:34:32"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 8223,
                "name": "ParameterList",
                "src": "4002:0:32"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        8225
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "src",
                          "scope": 8267,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8224,
                            "name": "ElementaryTypeName",
                            "src": "4012:7:32"
                          }
                        ],
                        "id": 8225,
                        "name": "VariableDeclaration",
                        "src": "4012:11:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 8219,
                          "type": "uint256",
                          "value": "_src"
                        },
                        "id": 8226,
                        "name": "Identifier",
                        "src": "4026:4:32"
                      }
                    ],
                    "id": 8227,
                    "name": "VariableDeclarationStatement",
                    "src": "4012:18:32"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8229
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "dest",
                          "scope": 8267,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8228,
                            "name": "ElementaryTypeName",
                            "src": "4040:7:32"
                          }
                        ],
                        "id": 8229,
                        "name": "VariableDeclaration",
                        "src": "4040:12:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 8217,
                          "type": "uint256",
                          "value": "_dest"
                        },
                        "id": 8230,
                        "name": "Identifier",
                        "src": "4055:5:32"
                      }
                    ],
                    "id": 8231,
                    "name": "VariableDeclarationStatement",
                    "src": "4040:20:32"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8233
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "len",
                          "scope": 8267,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 8232,
                            "name": "ElementaryTypeName",
                            "src": "4070:7:32"
                          }
                        ],
                        "id": 8233,
                        "name": "VariableDeclaration",
                        "src": "4070:11:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 8221,
                          "type": "uint256",
                          "value": "_len"
                        },
                        "id": 8234,
                        "name": "Identifier",
                        "src": "4084:4:32"
                      }
                    ],
                    "id": 8235,
                    "name": "VariableDeclarationStatement",
                    "src": "4070:18:32"
                  },
                  {
                    "attributes": {
                      "initializationExpression": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 8233,
                              "type": "uint256",
                              "value": "len"
                            },
                            "id": 8236,
                            "name": "Identifier",
                            "src": "4156:3:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3332",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 32",
                              "value": "32"
                            },
                            "id": 8237,
                            "name": "Literal",
                            "src": "4163:2:32"
                          }
                        ],
                        "id": 8238,
                        "name": "BinaryOperation",
                        "src": "4156:9:32"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 8233,
                                  "type": "uint256",
                                  "value": "len"
                                },
                                "id": 8239,
                                "name": "Identifier",
                                "src": "4167:3:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 8240,
                                "name": "Literal",
                                "src": "4174:2:32"
                              }
                            ],
                            "id": 8241,
                            "name": "Assignment",
                            "src": "4167:9:32"
                          }
                        ],
                        "id": 8242,
                        "name": "ExpressionStatement",
                        "src": "4167:9:32"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "externalReferences": [
                                {
                                  "dest": {
                                    "declaration": 8229,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "4226:4:32",
                                    "valueSize": 1
                                  }
                                },
                                {
                                  "src": {
                                    "declaration": 8225,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "4238:3:32",
                                    "valueSize": 1
                                  }
                                }
                              ],
                              "operations": "{\n    mstore(dest, mload(src))\n}"
                            },
                            "children": [],
                            "id": 8243,
                            "name": "InlineAssembly",
                            "src": "4192:82:32"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8229,
                                      "type": "uint256",
                                      "value": "dest"
                                    },
                                    "id": 8244,
                                    "name": "Identifier",
                                    "src": "4270:4:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 8245,
                                    "name": "Literal",
                                    "src": "4278:2:32"
                                  }
                                ],
                                "id": 8246,
                                "name": "Assignment",
                                "src": "4270:10:32"
                              }
                            ],
                            "id": 8247,
                            "name": "ExpressionStatement",
                            "src": "4270:10:32"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 8225,
                                      "type": "uint256",
                                      "value": "src"
                                    },
                                    "id": 8248,
                                    "name": "Identifier",
                                    "src": "4294:3:32"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 8249,
                                    "name": "Literal",
                                    "src": "4301:2:32"
                                  }
                                ],
                                "id": 8250,
                                "name": "Assignment",
                                "src": "4294:9:32"
                              }
                            ],
                            "id": 8251,
                            "name": "ExpressionStatement",
                            "src": "4294:9:32"
                          }
                        ],
                        "id": 8252,
                        "name": "Block",
                        "src": "4178:136:32"
                      }
                    ],
                    "id": 8253,
                    "name": "ForStatement",
                    "src": "4149:165:32"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        8255
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "mask",
                          "scope": 8267,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 8254,
                            "name": "ElementaryTypeName",
                            "src": "4356:4:32"
                          }
                        ],
                        "id": 8255,
                        "name": "VariableDeclaration",
                        "src": "4356:9:32"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "**",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "323536",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 256",
                                  "value": "256"
                                },
                                "id": 8256,
                                "name": "Literal",
                                "src": "4368:3:32"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 8257,
                                        "name": "Literal",
                                        "src": "4376:2:32"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 8233,
                                          "type": "uint256",
                                          "value": "len"
                                        },
                                        "id": 8258,
                                        "name": "Identifier",
                                        "src": "4381:3:32"
                                      }
                                    ],
                                    "id": 8259,
                                    "name": "BinaryOperation",
                                    "src": "4376:8:32"
                                  }
                                ],
                                "id": 8260,
                                "name": "TupleExpression",
                                "src": "4375:10:32"
                              }
                            ],
                            "id": 8261,
                            "name": "BinaryOperation",
                            "src": "4368:17:32"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 8262,
                            "name": "Literal",
                            "src": "4388:1:32"
                          }
                        ],
                        "id": 8263,
                        "name": "BinaryOperation",
                        "src": "4368:21:32"
                      }
                    ],
                    "id": 8264,
                    "name": "VariableDeclarationStatement",
                    "src": "4356:33:32"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "src": {
                            "declaration": 8225,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4447:3:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "mask": {
                            "declaration": 8255,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4457:4:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "dest": {
                            "declaration": 8229,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4502:4:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "mask": {
                            "declaration": 8255,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4509:4:32",
                            "valueSize": 1
                          }
                        },
                        {
                          "dest": {
                            "declaration": 8229,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4534:4:32",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    let srcpart := and(mload(src), not(mask))\n    let destpart := and(mload(dest), mask)\n    mstore(dest, or(destpart, srcpart))\n}"
                    },
                    "children": [],
                    "id": 8265,
                    "name": "InlineAssembly",
                    "src": "4399:179:32"
                  }
                ],
                "id": 8266,
                "name": "Block",
                "src": "4002:576:32"
              }
            ],
            "id": 8267,
            "name": "FunctionDefinition",
            "src": "3940:638:32"
          }
        ],
        "id": 8268,
        "name": "ContractDefinition",
        "src": "26:4554:32"
      }
    ],
    "id": 8269,
    "name": "SourceUnit",
    "src": "0:4580:32"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.092Z"
}