{
  "contractName": "Elements",
  "abi": [],
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820cba87f8eaca91a07137135d28dfc0b47cc1badf24ab7c394a81b81edf728a75f0029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820cba87f8eaca91a07137135d28dfc0b47cc1badf24ab7c394a81b81edf728a75f0029",
  "sourceMap": "105:1637:15:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "105:1637:15:-;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./Actions.sol\";\nimport \"./Tables.sol\";\nimport \"../utils/strings.sol\";\n\nlibrary Elements {\n    using strings for *;\n    using Actions for Actions.Action;\n    using Tables for Tables.Table;\n\n    struct Element {\n        bool exists;\n        string id;\n        string type_;\n        string label;\n        string data;\n        Actions.Action action;\n        Tables.Table table;\n    }\n\n    function empty() internal pure returns (Element memory) {\n        return Element(false, \"\", \"\", \"\", \"\", Actions.empty(), Tables.empty());\n    }\n\n    function toJson(Element memory _self) internal pure returns (string) {\n        if (_self.exists) {\n            string memory json = '{\"id\":\"';\n            json = json.toSlice().concat(_self.id.toSlice());\n            json = json.toSlice().concat('\"'.toSlice());\n            if (_self.action.exists) {\n                json = json.toSlice().concat(', \"action\":'.toSlice());\n                json = json.toSlice().concat(_self.action.toJson().toSlice());\n            }\n            if (_self.table.exists) {\n                json = json.toSlice().concat(', \"table\":'.toSlice());\n                json = json.toSlice().concat(_self.table.toJson().toSlice());\n            }\n            json = json.toSlice().concat(',\"type\":\"'.toSlice());\n            json = json.toSlice().concat(_self.type_.toSlice());\n            json = json.toSlice().concat('\",\"label\":\"'.toSlice());\n            json = json.toSlice().concat(_self.label.toSlice());\n            json = json.toSlice().concat('\",\"data\":'.toSlice());\n            json = json.toSlice().concat(_self.data.toSlice());\n            return json.toSlice().concat('}'.toSlice());\n        } else {\n            return \"null\";\n        }\n    }\n}",
  "sourcePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Elements.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Elements.sol",
    "exportedSymbols": {
      "Elements": [
        4105
      ]
    },
    "id": 4106,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3878,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:15"
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Actions.sol",
        "file": "./Actions.sol",
        "id": 3879,
        "nodeType": "ImportDirective",
        "scope": 4106,
        "sourceUnit": 3877,
        "src": "26:23:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Tables.sol",
        "file": "./Tables.sol",
        "id": 3880,
        "nodeType": "ImportDirective",
        "scope": 4106,
        "sourceUnit": 4438,
        "src": "50:22:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/utils/strings.sol",
        "file": "../utils/strings.sol",
        "id": 3881,
        "nodeType": "ImportDirective",
        "scope": 4106,
        "sourceUnit": 3729,
        "src": "73:30:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4105,
        "linearizedBaseContracts": [
          4105
        ],
        "name": "Elements",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3883,
            "libraryName": {
              "contractScope": null,
              "id": 3882,
              "name": "strings",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3728,
              "src": "134:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_strings_$3728",
                "typeString": "library strings"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "128:20:15",
            "typeName": null
          },
          {
            "id": 3886,
            "libraryName": {
              "contractScope": null,
              "id": 3884,
              "name": "Actions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3876,
              "src": "159:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Actions_$3876",
                "typeString": "library Actions"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "153:33:15",
            "typeName": {
              "contractScope": null,
              "id": 3885,
              "name": "Actions.Action",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3748,
              "src": "171:14:15",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Action_$3748_storage_ptr",
                "typeString": "struct Actions.Action"
              }
            }
          },
          {
            "id": 3889,
            "libraryName": {
              "contractScope": null,
              "id": 3887,
              "name": "Tables",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4437,
              "src": "197:6:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Tables_$4437",
                "typeString": "library Tables"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "191:30:15",
            "typeName": {
              "contractScope": null,
              "id": 3888,
              "name": "Tables.Table",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4133,
              "src": "208:12:15",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Table_$4133_storage_ptr",
                "typeString": "struct Tables.Table"
              }
            }
          },
          {
            "canonicalName": "Elements.Element",
            "id": 3904,
            "members": [
              {
                "constant": false,
                "id": 3891,
                "name": "exists",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "252:11:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 3890,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "252:4:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3893,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "273:9:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3892,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "273:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3895,
                "name": "type_",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "292:12:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3894,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "292:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3897,
                "name": "label",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "314:12:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3896,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "314:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3899,
                "name": "data",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "336:11:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3898,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "336:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3901,
                "name": "action",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "357:21:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Action_$3748_storage_ptr",
                  "typeString": "struct Actions.Action"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 3900,
                  "name": "Actions.Action",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3748,
                  "src": "357:14:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Action_$3748_storage_ptr",
                    "typeString": "struct Actions.Action"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3903,
                "name": "table",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "388:18:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Table_$4133_storage_ptr",
                  "typeString": "struct Tables.Table"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 3902,
                  "name": "Tables.Table",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4133,
                  "src": "388:12:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Table_$4133_storage_ptr",
                    "typeString": "struct Tables.Table"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Element",
            "nodeType": "StructDefinition",
            "scope": 4105,
            "src": "227:186:15",
            "visibility": "public"
          },
          {
            "body": {
              "id": 3923,
              "nodeType": "Block",
              "src": "475:87:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 3910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "500:5:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "507:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "511:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "515:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "519:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3915,
                            "name": "Actions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3876,
                            "src": "523:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Actions_$3876_$",
                              "typeString": "type(library Actions)"
                            }
                          },
                          "id": 3916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "empty",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3764,
                          "src": "523:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Action_$3748_memory_ptr_$",
                            "typeString": "function () pure returns (struct Actions.Action memory)"
                          }
                        },
                        "id": 3917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "523:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Action_$3748_memory_ptr",
                          "typeString": "struct Actions.Action memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3918,
                            "name": "Tables",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4437,
                            "src": "540:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Tables_$4437_$",
                              "typeString": "type(library Tables)"
                            }
                          },
                          "id": 3919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "empty",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4153,
                          "src": "540:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Table_$4133_memory_ptr_$",
                            "typeString": "function () pure returns (struct Tables.Table memory)"
                          }
                        },
                        "id": 3920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "540:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Table_$4133_memory_ptr",
                          "typeString": "struct Tables.Table memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_struct$_Action_$3748_memory_ptr",
                          "typeString": "struct Actions.Action memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Table_$4133_memory_ptr",
                          "typeString": "struct Tables.Table memory"
                        }
                      ],
                      "id": 3909,
                      "name": "Element",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3904,
                      "src": "492:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Element_$3904_storage_ptr_$",
                        "typeString": "type(struct Elements.Element storage pointer)"
                      }
                    },
                    "id": 3921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "492:63:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$3904_memory",
                      "typeString": "struct Elements.Element memory"
                    }
                  },
                  "functionReturnParameters": 3908,
                  "id": 3922,
                  "nodeType": "Return",
                  "src": "485:70:15"
                }
              ]
            },
            "documentation": null,
            "id": 3924,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "empty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3905,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "433:2:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 3908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3907,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3924,
                  "src": "459:7:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                    "typeString": "struct Elements.Element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3906,
                    "name": "Element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3904,
                    "src": "459:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$3904_storage_ptr",
                      "typeString": "struct Elements.Element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "458:16:15"
            },
            "scope": 4105,
            "src": "419:143:15",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4103,
              "nodeType": "Block",
              "src": "637:1103:15",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3931,
                      "name": "_self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3926,
                      "src": "651:5:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "id": 3932,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "exists",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3891,
                    "src": "651:12:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4101,
                    "nodeType": "Block",
                    "src": "1696:38:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "6e756c6c",
                          "id": 4099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1717:6:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_efbde2c3aee204a69b7696d4b10ff31137fe78e3946306284f806e2dfc68b805",
                            "typeString": "literal_string \"null\""
                          },
                          "value": "null"
                        },
                        "functionReturnParameters": 3930,
                        "id": 4100,
                        "nodeType": "Return",
                        "src": "1710:13:15"
                      }
                    ]
                  },
                  "id": 4102,
                  "nodeType": "IfStatement",
                  "src": "647:1087:15",
                  "trueBody": {
                    "id": 4098,
                    "nodeType": "Block",
                    "src": "665:1025:15",
                    "statements": [
                      {
                        "assignments": [
                          3934
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3934,
                            "name": "json",
                            "nodeType": "VariableDeclaration",
                            "scope": 4104,
                            "src": "679:18:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 3933,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "679:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3936,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "7b226964223a22",
                          "id": 3935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "700:9:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_334dd9a3f36c190d9290f44b1b75d9f1f0e8c64c9d2b286cea8c274de5e469a6",
                            "typeString": "literal_string \"{\"id\":\"\""
                          },
                          "value": "{\"id\":\""
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "679:30:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3937,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "723:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3942,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "752:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 3943,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3893,
                                    "src": "752:8:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 3944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "752:16:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "752:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3938,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "730:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 3939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "730:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "730:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 3941,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "730:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 3946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "730:41:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "723:48:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 3948,
                        "nodeType": "ExpressionStatement",
                        "src": "723:48:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3949,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "785:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "22",
                                    "id": 3954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "814:3:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0",
                                      "typeString": "literal_string \"\"\""
                                    },
                                    "value": "\""
                                  },
                                  "id": 3955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "814:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "814:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3950,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "792:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 3951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "792:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "792:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 3953,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "792:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 3957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "792:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "785:43:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 3959,
                        "nodeType": "ExpressionStatement",
                        "src": "785:43:15"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3960,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3926,
                              "src": "846:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                "typeString": "struct Elements.Element memory"
                              }
                            },
                            "id": 3961,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "action",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3901,
                            "src": "846:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Action_$3748_memory",
                              "typeString": "struct Actions.Action memory"
                            }
                          },
                          "id": 3962,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3739,
                          "src": "846:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3989,
                        "nodeType": "IfStatement",
                        "src": "842:190:15",
                        "trueBody": {
                          "id": 3988,
                          "nodeType": "Block",
                          "src": "867:165:15",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3963,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "885:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "hexValue": "2c2022616374696f6e223a",
                                          "id": 3968,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "914:13:15",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_d9f025b27348f2b9fbecae53843b9f9b155f9235f94ad0a5e49067911fa2cdaa",
                                            "typeString": "literal_string \", \"action\":\""
                                          },
                                          "value": ", \"action\":"
                                        },
                                        "id": 3969,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "914:21:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3970,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "914:23:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3964,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "892:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3965,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "892:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3966,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "892:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 3967,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "892:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 3971,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "892:46:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "885:53:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 3973,
                              "nodeType": "ExpressionStatement",
                              "src": "885:53:15"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3974,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "956:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 3979,
                                                "name": "_self",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3926,
                                                "src": "985:5:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                                  "typeString": "struct Elements.Element memory"
                                                }
                                              },
                                              "id": 3980,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "action",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3901,
                                              "src": "985:12:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Action_$3748_memory",
                                                "typeString": "struct Actions.Action memory"
                                              }
                                            },
                                            "id": 3981,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "toJson",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "985:19:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Action_$3748_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_Action_$3748_memory_ptr_$",
                                              "typeString": "function (struct Actions.Action memory) pure returns (string memory)"
                                            }
                                          },
                                          "id": 3982,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "985:21:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "985:29:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3984,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "985:31:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3975,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "963:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3976,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "963:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "963:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 3978,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "963:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 3985,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "963:54:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "956:61:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 3987,
                              "nodeType": "ExpressionStatement",
                              "src": "956:61:15"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3990,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3926,
                              "src": "1049:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                "typeString": "struct Elements.Element memory"
                              }
                            },
                            "id": 3991,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "table",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3903,
                            "src": "1049:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Table_$4133_memory",
                              "typeString": "struct Tables.Table memory"
                            }
                          },
                          "id": 3992,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4126,
                          "src": "1049:18:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4019,
                        "nodeType": "IfStatement",
                        "src": "1045:187:15",
                        "trueBody": {
                          "id": 4018,
                          "nodeType": "Block",
                          "src": "1069:163:15",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3993,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "1087:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "hexValue": "2c20227461626c65223a",
                                          "id": 3998,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1116:12:15",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8184891f7db11950868bdf741a85f8ebf6d5f4758b8cb95875f4953504610168",
                                            "typeString": "literal_string \", \"table\":\""
                                          },
                                          "value": ", \"table\":"
                                        },
                                        "id": 3999,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1116:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 4000,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1116:22:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3994,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "1094:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3995,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1094:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1094:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 3997,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "1094:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 4001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1094:45:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "1087:52:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 4003,
                              "nodeType": "ExpressionStatement",
                              "src": "1087:52:15"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4004,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "1157:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4009,
                                                "name": "_self",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3926,
                                                "src": "1186:5:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                                  "typeString": "struct Elements.Element memory"
                                                }
                                              },
                                              "id": 4010,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "table",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3903,
                                              "src": "1186:11:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Table_$4133_memory",
                                                "typeString": "struct Tables.Table memory"
                                              }
                                            },
                                            "id": 4011,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "toJson",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4298,
                                            "src": "1186:18:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Table_$4133_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_Table_$4133_memory_ptr_$",
                                              "typeString": "function (struct Tables.Table memory) pure returns (string memory)"
                                            }
                                          },
                                          "id": 4012,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1186:20:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 4013,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1186:28:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 4014,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1186:30:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4005,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "1164:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 4006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1164:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 4007,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1164:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 4008,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "1164:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 4015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1164:53:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "1157:60:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 4017,
                              "nodeType": "ExpressionStatement",
                              "src": "1157:60:15"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4020,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1245:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "2c2274797065223a22",
                                    "id": 4025,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1274:11:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_b4fbf00c56b37e82a9dee4321b629ad64e2543fa75c2e234504699e72407e9a1",
                                      "typeString": "literal_string \",\"type\":\"\""
                                    },
                                    "value": ",\"type\":\""
                                  },
                                  "id": 4026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1274:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1274:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4021,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1252:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1252:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1252:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4024,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1252:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1252:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1245:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4030,
                        "nodeType": "ExpressionStatement",
                        "src": "1245:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4031,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1310:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4036,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "1339:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 4037,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "type_",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3895,
                                    "src": "1339:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1339:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1339:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4032,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1317:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1317:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1317:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4035,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1317:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1317:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1310:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4042,
                        "nodeType": "ExpressionStatement",
                        "src": "1310:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4043,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1375:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "222c226c6162656c223a22",
                                    "id": 4048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1404:13:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1aaece16e386a4442fe5e214ba2ab303d11f9e5f993e53c68ab73d8896982cd0",
                                      "typeString": "literal_string \"\",\"label\":\"\""
                                    },
                                    "value": "\",\"label\":\""
                                  },
                                  "id": 4049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1404:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1404:23:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4044,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1382:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1382:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1382:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4047,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1382:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1382:46:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1375:53:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4053,
                        "nodeType": "ExpressionStatement",
                        "src": "1375:53:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4054,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1442:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4059,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "1471:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 4060,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "label",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3897,
                                    "src": "1471:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4061,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1471:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1471:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4055,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1449:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1449:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1449:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4058,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1449:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1449:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1442:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4065,
                        "nodeType": "ExpressionStatement",
                        "src": "1442:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4066,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1507:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "222c2264617461223a",
                                    "id": 4071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1536:11:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_47d9b6b9eedb5779e03f2f9c696299a5c97a2b777b2f6585ebbd0c918f6e3a4e",
                                      "typeString": "literal_string \"\",\"data\":\""
                                    },
                                    "value": "\",\"data\":"
                                  },
                                  "id": 4072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1536:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1536:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4067,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1514:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1514:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1514:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4070,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1514:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1514:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1507:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4076,
                        "nodeType": "ExpressionStatement",
                        "src": "1507:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4077,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1572:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4082,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "1601:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 4083,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3899,
                                    "src": "1601:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1601:18:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1601:20:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4078,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1579:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1579:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1579:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4081,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1579:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1579:43:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1572:50:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4088,
                        "nodeType": "ExpressionStatement",
                        "src": "1572:50:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "hexValue": "7d",
                                  "id": 4093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1665:3:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8e2ffa389f3a6ded42d759b3377ac0d928e6a268d143bcc9517093d10c843bff",
                                    "typeString": "literal_string \"}\""
                                  },
                                  "value": "}"
                                },
                                "id": 4094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toSlice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2100,
                                "src": "1665:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                }
                              },
                              "id": 4095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1665:13:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                "typeString": "struct strings.slice memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                "typeString": "struct strings.slice memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4089,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "1643:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "id": 4090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toSlice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2100,
                                "src": "1643:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                }
                              },
                              "id": 4091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1643:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                "typeString": "struct strings.slice memory"
                              }
                            },
                            "id": 4092,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3613,
                            "src": "1643:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                              "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                            }
                          },
                          "id": 4096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1643:36:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3930,
                        "id": 4097,
                        "nodeType": "Return",
                        "src": "1636:43:15"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 4104,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toJson",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3927,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3926,
                  "name": "_self",
                  "nodeType": "VariableDeclaration",
                  "scope": 4104,
                  "src": "584:20:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                    "typeString": "struct Elements.Element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3925,
                    "name": "Element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3904,
                    "src": "584:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$3904_storage_ptr",
                      "typeString": "struct Elements.Element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "583:22:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 3930,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3929,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4104,
                  "src": "629:6:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3928,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "629:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "628:8:15"
            },
            "scope": 4105,
            "src": "568:1172:15",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 4106,
        "src": "105:1637:15"
      }
    ],
    "src": "0:1742:15"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Elements.sol",
    "exportedSymbols": {
      "Elements": [
        4105
      ]
    },
    "id": 4106,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3878,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:15"
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Actions.sol",
        "file": "./Actions.sol",
        "id": 3879,
        "nodeType": "ImportDirective",
        "scope": 4106,
        "sourceUnit": 3877,
        "src": "26:23:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Tables.sol",
        "file": "./Tables.sol",
        "id": 3880,
        "nodeType": "ImportDirective",
        "scope": 4106,
        "sourceUnit": 4438,
        "src": "50:22:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/utils/strings.sol",
        "file": "../utils/strings.sol",
        "id": 3881,
        "nodeType": "ImportDirective",
        "scope": 4106,
        "sourceUnit": 3729,
        "src": "73:30:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4105,
        "linearizedBaseContracts": [
          4105
        ],
        "name": "Elements",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3883,
            "libraryName": {
              "contractScope": null,
              "id": 3882,
              "name": "strings",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3728,
              "src": "134:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_strings_$3728",
                "typeString": "library strings"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "128:20:15",
            "typeName": null
          },
          {
            "id": 3886,
            "libraryName": {
              "contractScope": null,
              "id": 3884,
              "name": "Actions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3876,
              "src": "159:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Actions_$3876",
                "typeString": "library Actions"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "153:33:15",
            "typeName": {
              "contractScope": null,
              "id": 3885,
              "name": "Actions.Action",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3748,
              "src": "171:14:15",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Action_$3748_storage_ptr",
                "typeString": "struct Actions.Action"
              }
            }
          },
          {
            "id": 3889,
            "libraryName": {
              "contractScope": null,
              "id": 3887,
              "name": "Tables",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4437,
              "src": "197:6:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Tables_$4437",
                "typeString": "library Tables"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "191:30:15",
            "typeName": {
              "contractScope": null,
              "id": 3888,
              "name": "Tables.Table",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4133,
              "src": "208:12:15",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Table_$4133_storage_ptr",
                "typeString": "struct Tables.Table"
              }
            }
          },
          {
            "canonicalName": "Elements.Element",
            "id": 3904,
            "members": [
              {
                "constant": false,
                "id": 3891,
                "name": "exists",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "252:11:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 3890,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "252:4:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3893,
                "name": "id",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "273:9:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3892,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "273:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3895,
                "name": "type_",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "292:12:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3894,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "292:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3897,
                "name": "label",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "314:12:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3896,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "314:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3899,
                "name": "data",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "336:11:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3898,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "336:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3901,
                "name": "action",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "357:21:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Action_$3748_storage_ptr",
                  "typeString": "struct Actions.Action"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 3900,
                  "name": "Actions.Action",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3748,
                  "src": "357:14:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Action_$3748_storage_ptr",
                    "typeString": "struct Actions.Action"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3903,
                "name": "table",
                "nodeType": "VariableDeclaration",
                "scope": 3904,
                "src": "388:18:15",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Table_$4133_storage_ptr",
                  "typeString": "struct Tables.Table"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 3902,
                  "name": "Tables.Table",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4133,
                  "src": "388:12:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Table_$4133_storage_ptr",
                    "typeString": "struct Tables.Table"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Element",
            "nodeType": "StructDefinition",
            "scope": 4105,
            "src": "227:186:15",
            "visibility": "public"
          },
          {
            "body": {
              "id": 3923,
              "nodeType": "Block",
              "src": "475:87:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 3910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "500:5:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "507:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "511:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "515:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 3914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "519:2:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3915,
                            "name": "Actions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3876,
                            "src": "523:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Actions_$3876_$",
                              "typeString": "type(library Actions)"
                            }
                          },
                          "id": 3916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "empty",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3764,
                          "src": "523:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Action_$3748_memory_ptr_$",
                            "typeString": "function () pure returns (struct Actions.Action memory)"
                          }
                        },
                        "id": 3917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "523:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Action_$3748_memory_ptr",
                          "typeString": "struct Actions.Action memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3918,
                            "name": "Tables",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4437,
                            "src": "540:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Tables_$4437_$",
                              "typeString": "type(library Tables)"
                            }
                          },
                          "id": 3919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "empty",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4153,
                          "src": "540:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Table_$4133_memory_ptr_$",
                            "typeString": "function () pure returns (struct Tables.Table memory)"
                          }
                        },
                        "id": 3920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "540:14:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Table_$4133_memory_ptr",
                          "typeString": "struct Tables.Table memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_struct$_Action_$3748_memory_ptr",
                          "typeString": "struct Actions.Action memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Table_$4133_memory_ptr",
                          "typeString": "struct Tables.Table memory"
                        }
                      ],
                      "id": 3909,
                      "name": "Element",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3904,
                      "src": "492:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Element_$3904_storage_ptr_$",
                        "typeString": "type(struct Elements.Element storage pointer)"
                      }
                    },
                    "id": 3921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "492:63:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$3904_memory",
                      "typeString": "struct Elements.Element memory"
                    }
                  },
                  "functionReturnParameters": 3908,
                  "id": 3922,
                  "nodeType": "Return",
                  "src": "485:70:15"
                }
              ]
            },
            "documentation": null,
            "id": 3924,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "empty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3905,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "433:2:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 3908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3907,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3924,
                  "src": "459:7:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                    "typeString": "struct Elements.Element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3906,
                    "name": "Element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3904,
                    "src": "459:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$3904_storage_ptr",
                      "typeString": "struct Elements.Element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "458:16:15"
            },
            "scope": 4105,
            "src": "419:143:15",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4103,
              "nodeType": "Block",
              "src": "637:1103:15",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3931,
                      "name": "_self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3926,
                      "src": "651:5:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "id": 3932,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "exists",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3891,
                    "src": "651:12:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4101,
                    "nodeType": "Block",
                    "src": "1696:38:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "6e756c6c",
                          "id": 4099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1717:6:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_efbde2c3aee204a69b7696d4b10ff31137fe78e3946306284f806e2dfc68b805",
                            "typeString": "literal_string \"null\""
                          },
                          "value": "null"
                        },
                        "functionReturnParameters": 3930,
                        "id": 4100,
                        "nodeType": "Return",
                        "src": "1710:13:15"
                      }
                    ]
                  },
                  "id": 4102,
                  "nodeType": "IfStatement",
                  "src": "647:1087:15",
                  "trueBody": {
                    "id": 4098,
                    "nodeType": "Block",
                    "src": "665:1025:15",
                    "statements": [
                      {
                        "assignments": [
                          3934
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3934,
                            "name": "json",
                            "nodeType": "VariableDeclaration",
                            "scope": 4104,
                            "src": "679:18:15",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 3933,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "679:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3936,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "7b226964223a22",
                          "id": 3935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "700:9:15",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_334dd9a3f36c190d9290f44b1b75d9f1f0e8c64c9d2b286cea8c274de5e469a6",
                            "typeString": "literal_string \"{\"id\":\"\""
                          },
                          "value": "{\"id\":\""
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "679:30:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3937,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "723:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3942,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "752:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 3943,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3893,
                                    "src": "752:8:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 3944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "752:16:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "752:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3938,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "730:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 3939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "730:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "730:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 3941,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "730:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 3946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "730:41:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "723:48:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 3948,
                        "nodeType": "ExpressionStatement",
                        "src": "723:48:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3949,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "785:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "22",
                                    "id": 3954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "814:3:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0",
                                      "typeString": "literal_string \"\"\""
                                    },
                                    "value": "\""
                                  },
                                  "id": 3955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "814:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "814:13:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3950,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "792:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 3951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "792:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 3952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "792:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 3953,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "792:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 3957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "792:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "785:43:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 3959,
                        "nodeType": "ExpressionStatement",
                        "src": "785:43:15"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3960,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3926,
                              "src": "846:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                "typeString": "struct Elements.Element memory"
                              }
                            },
                            "id": 3961,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "action",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3901,
                            "src": "846:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Action_$3748_memory",
                              "typeString": "struct Actions.Action memory"
                            }
                          },
                          "id": 3962,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3739,
                          "src": "846:19:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3989,
                        "nodeType": "IfStatement",
                        "src": "842:190:15",
                        "trueBody": {
                          "id": 3988,
                          "nodeType": "Block",
                          "src": "867:165:15",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3963,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "885:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "hexValue": "2c2022616374696f6e223a",
                                          "id": 3968,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "914:13:15",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_d9f025b27348f2b9fbecae53843b9f9b155f9235f94ad0a5e49067911fa2cdaa",
                                            "typeString": "literal_string \", \"action\":\""
                                          },
                                          "value": ", \"action\":"
                                        },
                                        "id": 3969,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "914:21:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3970,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "914:23:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3964,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "892:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3965,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "892:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3966,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "892:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 3967,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "892:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 3971,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "892:46:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "885:53:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 3973,
                              "nodeType": "ExpressionStatement",
                              "src": "885:53:15"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3974,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "956:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 3979,
                                                "name": "_self",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3926,
                                                "src": "985:5:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                                  "typeString": "struct Elements.Element memory"
                                                }
                                              },
                                              "id": 3980,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "action",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3901,
                                              "src": "985:12:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Action_$3748_memory",
                                                "typeString": "struct Actions.Action memory"
                                              }
                                            },
                                            "id": 3981,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "toJson",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "985:19:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Action_$3748_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_Action_$3748_memory_ptr_$",
                                              "typeString": "function (struct Actions.Action memory) pure returns (string memory)"
                                            }
                                          },
                                          "id": 3982,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "985:21:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "985:29:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3984,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "985:31:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3975,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "963:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3976,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "963:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "963:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 3978,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "963:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 3985,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "963:54:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "956:61:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 3987,
                              "nodeType": "ExpressionStatement",
                              "src": "956:61:15"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3990,
                              "name": "_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3926,
                              "src": "1049:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                "typeString": "struct Elements.Element memory"
                              }
                            },
                            "id": 3991,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "table",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3903,
                            "src": "1049:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Table_$4133_memory",
                              "typeString": "struct Tables.Table memory"
                            }
                          },
                          "id": 3992,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4126,
                          "src": "1049:18:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4019,
                        "nodeType": "IfStatement",
                        "src": "1045:187:15",
                        "trueBody": {
                          "id": 4018,
                          "nodeType": "Block",
                          "src": "1069:163:15",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3993,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "1087:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "hexValue": "2c20227461626c65223a",
                                          "id": 3998,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1116:12:15",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8184891f7db11950868bdf741a85f8ebf6d5f4758b8cb95875f4953504610168",
                                            "typeString": "literal_string \", \"table\":\""
                                          },
                                          "value": ", \"table\":"
                                        },
                                        "id": 3999,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1116:20:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 4000,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1116:22:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3994,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "1094:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 3995,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1094:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 3996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1094:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 3997,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "1094:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 4001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1094:45:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "1087:52:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 4003,
                              "nodeType": "ExpressionStatement",
                              "src": "1087:52:15"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 4004,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "1157:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4009,
                                                "name": "_self",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3926,
                                                "src": "1186:5:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                                  "typeString": "struct Elements.Element memory"
                                                }
                                              },
                                              "id": 4010,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "table",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3903,
                                              "src": "1186:11:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Table_$4133_memory",
                                                "typeString": "struct Tables.Table memory"
                                              }
                                            },
                                            "id": 4011,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "toJson",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4298,
                                            "src": "1186:18:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Table_$4133_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_Table_$4133_memory_ptr_$",
                                              "typeString": "function (struct Tables.Table memory) pure returns (string memory)"
                                            }
                                          },
                                          "id": 4012,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1186:20:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 4013,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1186:28:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 4014,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1186:30:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4005,
                                          "name": "json",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3934,
                                          "src": "1164:4:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "id": 4006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "toSlice",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2100,
                                        "src": "1164:12:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                          "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                        }
                                      },
                                      "id": 4007,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1164:14:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                        "typeString": "struct strings.slice memory"
                                      }
                                    },
                                    "id": 4008,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "concat",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3613,
                                    "src": "1164:21:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                      "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 4015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1164:53:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "1157:60:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 4017,
                              "nodeType": "ExpressionStatement",
                              "src": "1157:60:15"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4020,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1245:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "2c2274797065223a22",
                                    "id": 4025,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1274:11:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_b4fbf00c56b37e82a9dee4321b629ad64e2543fa75c2e234504699e72407e9a1",
                                      "typeString": "literal_string \",\"type\":\"\""
                                    },
                                    "value": ",\"type\":\""
                                  },
                                  "id": 4026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1274:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1274:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4021,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1252:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1252:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1252:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4024,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1252:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1252:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1245:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4030,
                        "nodeType": "ExpressionStatement",
                        "src": "1245:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4031,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1310:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4036,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "1339:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 4037,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "type_",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3895,
                                    "src": "1339:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1339:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1339:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4032,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1317:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1317:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1317:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4035,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1317:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1317:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1310:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4042,
                        "nodeType": "ExpressionStatement",
                        "src": "1310:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4043,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1375:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "222c226c6162656c223a22",
                                    "id": 4048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1404:13:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_1aaece16e386a4442fe5e214ba2ab303d11f9e5f993e53c68ab73d8896982cd0",
                                      "typeString": "literal_string \"\",\"label\":\"\""
                                    },
                                    "value": "\",\"label\":\""
                                  },
                                  "id": 4049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1404:21:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1404:23:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4044,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1382:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1382:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1382:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4047,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1382:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1382:46:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1375:53:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4053,
                        "nodeType": "ExpressionStatement",
                        "src": "1375:53:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4054,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1442:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4059,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "1471:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 4060,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "label",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3897,
                                    "src": "1471:11:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4061,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1471:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1471:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4055,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1449:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1449:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1449:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4058,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1449:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1449:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1442:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4065,
                        "nodeType": "ExpressionStatement",
                        "src": "1442:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4066,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1507:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "hexValue": "222c2264617461223a",
                                    "id": 4071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1536:11:15",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_47d9b6b9eedb5779e03f2f9c696299a5c97a2b777b2f6585ebbd0c918f6e3a4e",
                                      "typeString": "literal_string \"\",\"data\":\""
                                    },
                                    "value": "\",\"data\":"
                                  },
                                  "id": 4072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1536:19:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1536:21:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4067,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1514:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1514:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1514:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4070,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1514:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1514:44:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1507:51:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4076,
                        "nodeType": "ExpressionStatement",
                        "src": "1507:51:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4077,
                            "name": "json",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3934,
                            "src": "1572:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4082,
                                      "name": "_self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3926,
                                      "src": "1601:5:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                                        "typeString": "struct Elements.Element memory"
                                      }
                                    },
                                    "id": 4083,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3899,
                                    "src": "1601:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1601:18:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1601:20:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4078,
                                    "name": "json",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3934,
                                    "src": "1579:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "id": 4079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toSlice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2100,
                                  "src": "1579:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                    "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                  }
                                },
                                "id": 4080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1579:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                  "typeString": "struct strings.slice memory"
                                }
                              },
                              "id": 4081,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "concat",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3613,
                              "src": "1579:21:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                                "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                              }
                            },
                            "id": 4086,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1579:43:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1572:50:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 4088,
                        "nodeType": "ExpressionStatement",
                        "src": "1572:50:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "hexValue": "7d",
                                  "id": 4093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1665:3:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8e2ffa389f3a6ded42d759b3377ac0d928e6a268d143bcc9517093d10c843bff",
                                    "typeString": "literal_string \"}\""
                                  },
                                  "value": "}"
                                },
                                "id": 4094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toSlice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2100,
                                "src": "1665:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                }
                              },
                              "id": 4095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1665:13:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                "typeString": "struct strings.slice memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                "typeString": "struct strings.slice memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4089,
                                  "name": "json",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3934,
                                  "src": "1643:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "id": 4090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toSlice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2100,
                                "src": "1643:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (struct strings.slice memory)"
                                }
                              },
                              "id": 4091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1643:14:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_slice_$2040_memory_ptr",
                                "typeString": "struct strings.slice memory"
                              }
                            },
                            "id": 4092,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3613,
                            "src": "1643:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$",
                              "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"
                            }
                          },
                          "id": 4096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1643:36:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3930,
                        "id": 4097,
                        "nodeType": "Return",
                        "src": "1636:43:15"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 4104,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toJson",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3927,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3926,
                  "name": "_self",
                  "nodeType": "VariableDeclaration",
                  "scope": 4104,
                  "src": "584:20:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Element_$3904_memory_ptr",
                    "typeString": "struct Elements.Element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3925,
                    "name": "Element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3904,
                    "src": "584:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$3904_storage_ptr",
                      "typeString": "struct Elements.Element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "583:22:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 3930,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3929,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4104,
                  "src": "629:6:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3928,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "629:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "628:8:15"
            },
            "scope": 4105,
            "src": "568:1172:15",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 4106,
        "src": "105:1637:15"
      }
    ],
    "src": "0:1742:15"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-31T09:02:05.432Z"
}