From 181f31ffbf6c84a75b92f781f4998c6613861bbe Mon Sep 17 00:00:00 2001 From: Kuzu CI Date: Fri, 23 Feb 2024 23:33:56 -0500 Subject: [PATCH] add support for import db --- scripts/antlr4/Cypher.g4.copy | 10 +- src/antlr4/Cypher.g4 | 10 +- src/binder/bind/CMakeLists.txt | 3 +- src/binder/bind/bind_import_database.cpp | 42 + src/binder/binder.cpp | 3 + src/binder/bound_statement_visitor.cpp | 3 + src/include/binder/binder.h | 1 + src/include/binder/bound_statement_visitor.h | 1 + .../binder/copy/bound_import_database.h | 23 + src/include/common/constants.h | 6 + src/include/common/enums/statement_type.h | 1 + src/include/main/client_context.h | 2 + src/include/parser/parsed_statement_visitor.h | 1 + src/include/parser/port_db.h | 11 + src/include/parser/transformer.h | 1 + .../planner/operator/logical_operator.h | 3 +- .../operator/persistent/logical_import_db.h | 29 + src/include/planner/planner.h | 1 + .../processor/operator/persistent/import_db.h | 27 + .../processor/operator/physical_operator.h | 1 + src/include/processor/plan_mapper.h | 1 + src/main/client_context.cpp | 35 +- src/parser/parsed_statement_visitor.cpp | 3 + src/parser/transform/transform_port_db.cpp | 6 + src/parser/transformer.cpp | 2 + src/planner/operator/logical_operator.cpp | 2 + .../operator/persistent/CMakeLists.txt | 3 +- .../operator/persistent/logical_import_db.cpp | 15 + src/planner/plan/plan_port_db.cpp | 13 + src/planner/planner.cpp | 3 + src/processor/map/map_port_db.cpp | 10 + src/processor/map/plan_mapper.cpp | 3 + .../operator/persistent/CMakeLists.txt | 3 +- .../operator/persistent/import_db.cpp | 17 + src/processor/operator/physical_operator.cpp | 2 + test/graph_test/base_graph_test.cpp | 50 - test/graph_test/graph_test.cpp | 6 - test/include/graph_test/graph_test.h | 9 +- test/include/test_helper/test_helper.h | 2 - test/include/test_runner/test_group.h | 3 + test/include/test_runner/test_parser.h | 6 +- .../{export_db.test => export_import_db.test} | 30 +- test/test_runner/test_parser.cpp | 12 +- test/test_runner/test_runner.cpp | 16 +- third_party/antlr4_cypher/cypher_lexer.cpp | 1066 ++-- third_party/antlr4_cypher/cypher_parser.cpp | 5041 +++++++++-------- .../antlr4_cypher/include/cypher_lexer.h | 38 +- .../antlr4_cypher/include/cypher_parser.h | 152 +- 48 files changed, 3552 insertions(+), 3176 deletions(-) create mode 100644 src/binder/bind/bind_import_database.cpp create mode 100644 src/include/binder/copy/bound_import_database.h create mode 100644 src/include/planner/operator/persistent/logical_import_db.h create mode 100644 src/include/processor/operator/persistent/import_db.h create mode 100644 src/planner/operator/persistent/logical_import_db.cpp create mode 100644 src/processor/operator/persistent/import_db.cpp rename test/test_files/copy/{export_db.test => export_import_db.test} (72%) diff --git a/scripts/antlr4/Cypher.g4.copy b/scripts/antlr4/Cypher.g4.copy index e8171a89b0..763bb33a91 100644 --- a/scripts/antlr4/Cypher.g4.copy +++ b/scripts/antlr4/Cypher.g4.copy @@ -30,7 +30,8 @@ oC_Statement | kU_CommentOn | kU_Transaction | kU_Extension - | kU_ExportDatabase; + | kU_ExportDatabase + | kU_ImportDatabase; kU_CopyFrom : COPY SP oC_SchemaName ( ( SP? '(' SP? kU_ColumnNames SP? ')' SP? ) | SP ) FROM SP (kU_FilePaths | oC_Variable) ( SP? '(' SP? kU_ParsingOptions SP? ')' )? ; @@ -47,6 +48,10 @@ kU_CopyTO kU_ExportDatabase : EXPORT SP DATABASE SP StringLiteral ( SP? '(' SP? kU_ParsingOptions SP? ')' )? ; +kU_ImportDatabase + : IMPORT SP DATABASE SP StringLiteral; + + kU_StandaloneCall : CALL SP oC_SymbolicName SP? '=' SP? oC_Literal ; @@ -89,6 +94,8 @@ COLUMN : ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'U' | 'u' ) ( 'M' | 'm' ) ( EXPORT: ( 'E' | 'e') ( 'X' | 'x') ( 'P' | 'p') ( 'O' | 'o') ( 'R' | 'r') ( 'T' | 't'); +IMPORT: ( 'I' | 'i') ( 'M' | 'm') ( 'P' | 'p') ( 'O' | 'o') ( 'R' | 'r') ( 'T' | 't'); + DATABASE: ( 'D' | 'd') ( 'A' | 'a') ( 'T' | 't') ( 'A' | 'a') ( 'B' | 'b') ( 'A' | 'a') ( 'S' | 's')( 'E' | 'e'); kU_DDL @@ -754,6 +761,7 @@ kU_NonReservedKeywords | BEGIN | END | IN + | IMPORT | EXPORT | DATABASE ; diff --git a/src/antlr4/Cypher.g4 b/src/antlr4/Cypher.g4 index e8171a89b0..763bb33a91 100644 --- a/src/antlr4/Cypher.g4 +++ b/src/antlr4/Cypher.g4 @@ -30,7 +30,8 @@ oC_Statement | kU_CommentOn | kU_Transaction | kU_Extension - | kU_ExportDatabase; + | kU_ExportDatabase + | kU_ImportDatabase; kU_CopyFrom : COPY SP oC_SchemaName ( ( SP? '(' SP? kU_ColumnNames SP? ')' SP? ) | SP ) FROM SP (kU_FilePaths | oC_Variable) ( SP? '(' SP? kU_ParsingOptions SP? ')' )? ; @@ -47,6 +48,10 @@ kU_CopyTO kU_ExportDatabase : EXPORT SP DATABASE SP StringLiteral ( SP? '(' SP? kU_ParsingOptions SP? ')' )? ; +kU_ImportDatabase + : IMPORT SP DATABASE SP StringLiteral; + + kU_StandaloneCall : CALL SP oC_SymbolicName SP? '=' SP? oC_Literal ; @@ -89,6 +94,8 @@ COLUMN : ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'U' | 'u' ) ( 'M' | 'm' ) ( EXPORT: ( 'E' | 'e') ( 'X' | 'x') ( 'P' | 'p') ( 'O' | 'o') ( 'R' | 'r') ( 'T' | 't'); +IMPORT: ( 'I' | 'i') ( 'M' | 'm') ( 'P' | 'p') ( 'O' | 'o') ( 'R' | 'r') ( 'T' | 't'); + DATABASE: ( 'D' | 'd') ( 'A' | 'a') ( 'T' | 't') ( 'A' | 'a') ( 'B' | 'b') ( 'A' | 'a') ( 'S' | 's')( 'E' | 'e'); kU_DDL @@ -754,6 +761,7 @@ kU_NonReservedKeywords | BEGIN | END | IN + | IMPORT | EXPORT | DATABASE ; diff --git a/src/binder/bind/CMakeLists.txt b/src/binder/bind/CMakeLists.txt index e426a0e4e3..90047fb71e 100644 --- a/src/binder/bind/CMakeLists.txt +++ b/src/binder/bind/CMakeLists.txt @@ -18,7 +18,8 @@ add_library( bind_transaction.cpp bind_updating_clause.cpp bind_extension.cpp - bind_export_database.cpp) + bind_export_database.cpp + bind_import_database.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/binder/bind/bind_import_database.cpp b/src/binder/bind/bind_import_database.cpp new file mode 100644 index 0000000000..633e271afe --- /dev/null +++ b/src/binder/bind/bind_import_database.cpp @@ -0,0 +1,42 @@ +#include "binder/binder.h" +#include "binder/copy/bound_import_database.h" +#include "common/exception/binder.h" +#include "parser/port_db.h" + +using namespace kuzu::common; +using namespace kuzu::parser; + +namespace kuzu { +namespace binder { + +std::string getFilePath( + common::VirtualFileSystem* vfs, const std::string boundFilePath, const std::string fileName) { + auto filePath = vfs->joinPath(boundFilePath, fileName); + if (!vfs->fileOrPathExists(filePath)) { + throw BinderException(stringFormat("File {} does not exist.", filePath)); + } + auto fileInfo = vfs->openFile(filePath, O_RDONLY +#ifdef _WIN32 + | _O_BINARY +#endif + ); + auto fsize = fileInfo->getFileSize(); + auto buffer = std::make_unique(fsize); + fileInfo->readFile(buffer.get(), fsize); + return std::string(buffer.get(), fsize); +} + +std::unique_ptr Binder::bindImportDatabaseClause(const Statement& statement) { + auto& importDatabaseStatement = ku_dynamic_cast(statement); + auto boundFilePath = importDatabaseStatement.getFilePath(); + if (!vfs->fileOrPathExists(boundFilePath)) { + throw BinderException(stringFormat("Directory {} does not exist.", boundFilePath)); + } + std::string finalQueryStatements; + finalQueryStatements += getFilePath(vfs, boundFilePath, ImportDBConstants::SCHEMA_NAME); + finalQueryStatements += getFilePath(vfs, boundFilePath, ImportDBConstants::COPY_NAME); + finalQueryStatements += getFilePath(vfs, boundFilePath, ImportDBConstants::MACRO_NAME); + return std::make_unique(boundFilePath, finalQueryStatements); +} +} // namespace binder +} // namespace kuzu diff --git a/src/binder/binder.cpp b/src/binder/binder.cpp index eef7536f9e..9bf794d913 100644 --- a/src/binder/binder.cpp +++ b/src/binder/binder.cpp @@ -58,6 +58,9 @@ std::unique_ptr Binder::bind(const Statement& statement) { case StatementType::EXPORT_DATABASE: { boundStatement = bindExportDatabaseClause(statement); } break; + case StatementType::IMPORT_DATABASE: { + boundStatement = bindImportDatabaseClause(statement); + } break; default: { KU_UNREACHABLE; } diff --git a/src/binder/bound_statement_visitor.cpp b/src/binder/bound_statement_visitor.cpp index 17c6be68e2..880a579319 100644 --- a/src/binder/bound_statement_visitor.cpp +++ b/src/binder/bound_statement_visitor.cpp @@ -50,6 +50,9 @@ void BoundStatementVisitor::visit(const BoundStatement& statement) { case StatementType::EXPORT_DATABASE: { visitExportDatabase(statement); } break; + case StatementType::IMPORT_DATABASE: { + visitImportDatabase(statement); + } break; default: KU_UNREACHABLE; } diff --git a/src/include/binder/binder.h b/src/include/binder/binder.h index 49ec7b6e42..47205bf552 100644 --- a/src/include/binder/binder.h +++ b/src/include/binder/binder.h @@ -146,6 +146,7 @@ class Binder { std::unique_ptr bindCopyToClause(const parser::Statement& statement); std::unique_ptr bindExportDatabaseClause(const parser::Statement& statement); + std::unique_ptr bindImportDatabaseClause(const parser::Statement& statement); /*** bind file scan ***/ std::unordered_map bindParsingOptions( diff --git a/src/include/binder/bound_statement_visitor.h b/src/include/binder/bound_statement_visitor.h index 3ededef8fc..45a1652b19 100644 --- a/src/include/binder/bound_statement_visitor.h +++ b/src/include/binder/bound_statement_visitor.h @@ -23,6 +23,7 @@ class BoundStatementVisitor { virtual void visitCopyFrom(const BoundStatement&) {} virtual void visitCopyTo(const BoundStatement&) {} virtual void visitExportDatabase(const BoundStatement&) {} + virtual void visitImportDatabase(const BoundStatement&) {} virtual void visitStandaloneCall(const BoundStatement&) {} virtual void visitCommentOn(const BoundStatement&) {} virtual void visitExplain(const BoundStatement&); diff --git a/src/include/binder/copy/bound_import_database.h b/src/include/binder/copy/bound_import_database.h new file mode 100644 index 0000000000..d6ec80b1a2 --- /dev/null +++ b/src/include/binder/copy/bound_import_database.h @@ -0,0 +1,23 @@ +#pragma once +#include "binder/bound_statement.h" + +namespace kuzu { +namespace binder { + +class BoundImportDatabase : public BoundStatement { +public: + BoundImportDatabase(std::string filePath, std::string query) + : BoundStatement{common::StatementType::IMPORT_DATABASE, + BoundStatementResult::createEmptyResult()}, + filePath{std::move(filePath)}, query{query} {} + + inline std::string getFilePath() const { return filePath; } + inline std::string getQuery() const { return query; } + +private: + std::string filePath; + std::string query; +}; + +} // namespace binder +} // namespace kuzu diff --git a/src/include/common/constants.h b/src/include/common/constants.h index 020a6ef770..d769cf0cb4 100644 --- a/src/include/common/constants.h +++ b/src/include/common/constants.h @@ -208,5 +208,11 @@ struct CopyToCSVConstants { static constexpr const uint64_t DEFAULT_CSV_FLUSH_SIZE = 4096 * 8; }; +struct ImportDBConstants { + static constexpr char SCHEMA_NAME[] = "schema.cypher"; + static constexpr char COPY_NAME[] = "copy.cypher"; + static constexpr char MACRO_NAME[] = "macro.cypher"; +}; + } // namespace common } // namespace kuzu diff --git a/src/include/common/enums/statement_type.h b/src/include/common/enums/statement_type.h index 2bc511f07f..ac439eb70f 100644 --- a/src/include/common/enums/statement_type.h +++ b/src/include/common/enums/statement_type.h @@ -19,6 +19,7 @@ enum class StatementType : uint8_t { TRANSACTION = 30, EXTENSION = 31, EXPORT_DATABASE = 32, + IMPORT_DATABASE = 33, }; struct StatementTypeUtils { diff --git a/src/include/main/client_context.h b/src/include/main/client_context.h index 7bfb168761..032350a949 100644 --- a/src/include/main/client_context.h +++ b/src/include/main/client_context.h @@ -113,6 +113,8 @@ class ClientContext { std::unique_ptr query(std::string_view queryStatement); + void runQuery(std::string query); + private: inline void resetActiveQuery() { activeQuery.reset(); } diff --git a/src/include/parser/parsed_statement_visitor.h b/src/include/parser/parsed_statement_visitor.h index d2681d11ed..76769561ae 100644 --- a/src/include/parser/parsed_statement_visitor.h +++ b/src/include/parser/parsed_statement_visitor.h @@ -49,6 +49,7 @@ class StatementVisitor { virtual void visitTransaction(const Statement& /*statement*/) {} virtual void visitExtension(const Statement& /*statement*/) {} virtual void visitExportDatabase(const Statement& /*statement*/) {} + virtual void visitImportDatabase(const Statement& /*statement*/) {} // LCOV_EXCL_STOP }; diff --git a/src/include/parser/port_db.h b/src/include/parser/port_db.h index ae291e548f..b05c5302b1 100644 --- a/src/include/parser/port_db.h +++ b/src/include/parser/port_db.h @@ -20,5 +20,16 @@ class ExportDB : public Statement { std::string filePath; }; +class ImportDB : public Statement { +public: + explicit ImportDB(std::string filePath) + : Statement{common::StatementType::IMPORT_DATABASE}, filePath{std::move(filePath)} {} + + inline std::string getFilePath() const { return filePath; } + +private: + std::string filePath; +}; + } // namespace parser } // namespace kuzu diff --git a/src/include/parser/transformer.h b/src/include/parser/transformer.h index 3b50702c66..ccd3a40029 100644 --- a/src/include/parser/transformer.h +++ b/src/include/parser/transformer.h @@ -53,6 +53,7 @@ class Transformer { parsing_option_t transformParsingOptions(CypherParser::KU_ParsingOptionsContext& ctx); std::unique_ptr transformExportDatabase(CypherParser::KU_ExportDatabaseContext& ctx); + std::unique_ptr transformImportDatabase(CypherParser::KU_ImportDatabaseContext& ctx); // Transform query statement. std::unique_ptr transformQuery(CypherParser::OC_QueryContext& ctx); diff --git a/src/include/planner/operator/logical_operator.h b/src/include/planner/operator/logical_operator.h index 74b3f4734c..c6c1749c50 100644 --- a/src/include/planner/operator/logical_operator.h +++ b/src/include/planner/operator/logical_operator.h @@ -52,7 +52,8 @@ enum class LogicalOperatorType : uint8_t { UNION_ALL, UNWIND, EXTENSION, - EXPORT_DATABASE + EXPORT_DATABASE, + IMPORT_DATABASE, }; class LogicalOperatorUtils { diff --git a/src/include/planner/operator/persistent/logical_import_db.h b/src/include/planner/operator/persistent/logical_import_db.h new file mode 100644 index 0000000000..29c3cb710d --- /dev/null +++ b/src/include/planner/operator/persistent/logical_import_db.h @@ -0,0 +1,29 @@ +#pragma once + +#include "planner/operator/logical_operator.h" + +namespace kuzu { +namespace planner { + +class LogicalImportDatabase : public LogicalOperator { +public: + explicit LogicalImportDatabase(std::string query) + : LogicalOperator{LogicalOperatorType::IMPORT_DATABASE}, query{query} {} + + inline std::string getExpressionsForPrinting() const override { return std::string{}; } + + void computeFactorizedSchema() override; + void computeFlatSchema() override; + + inline std::string getQuery() const { return query; } + + inline std::unique_ptr copy() override { + return make_unique(query); + } + +private: + std::string query; +}; + +} // namespace planner +} // namespace kuzu diff --git a/src/include/planner/planner.h b/src/include/planner/planner.h index a6239cdf19..48448695bc 100644 --- a/src/include/planner/planner.h +++ b/src/include/planner/planner.h @@ -65,6 +65,7 @@ class Planner { // Plan export database std::unique_ptr planExportDatabase(const binder::BoundStatement& statement); + std::unique_ptr planImportDatabase(const binder::BoundStatement& statement); // Plan query. std::vector> planQuery( diff --git a/src/include/processor/operator/persistent/import_db.h b/src/include/processor/operator/persistent/import_db.h new file mode 100644 index 0000000000..d9237278cc --- /dev/null +++ b/src/include/processor/operator/persistent/import_db.h @@ -0,0 +1,27 @@ +#pragma once + +#include "processor/operator/physical_operator.h" + +namespace kuzu { +namespace processor { + +class ImportDB : public PhysicalOperator { +public: + ImportDB(std::string query, uint32_t id, const std::string& paramsString) + : PhysicalOperator{PhysicalOperatorType::IMPORT_DATABASE, id, paramsString}, query{query} {} + + bool canParallel() const override { return false; } + + bool isSource() const override { return true; } + + bool getNextTuplesInternal(ExecutionContext* context) override; + + inline std::unique_ptr clone() override { + return std::make_unique(query, id, paramsString); + } + +private: + std::string query; +}; +} // namespace processor +} // namespace kuzu diff --git a/src/include/processor/operator/physical_operator.h b/src/include/processor/operator/physical_operator.h index 16dc616d92..6fdf17eb29 100644 --- a/src/include/processor/operator/physical_operator.h +++ b/src/include/processor/operator/physical_operator.h @@ -33,6 +33,7 @@ enum class PhysicalOperatorType : uint8_t { FLATTEN, HASH_JOIN_BUILD, HASH_JOIN_PROBE, + IMPORT_DATABASE, INDEX_LOOKUP, INDEX_SCAN, INSERT, diff --git a/src/include/processor/plan_mapper.h b/src/include/processor/plan_mapper.h index d4fb63fb5c..9669ac1311 100644 --- a/src/include/processor/plan_mapper.h +++ b/src/include/processor/plan_mapper.h @@ -105,6 +105,7 @@ class PlanMapper { std::unique_ptr mapTransaction(planner::LogicalOperator* logicalOperator); std::unique_ptr mapExtension(planner::LogicalOperator* logicalOperator); std::unique_ptr mapExportDatabase(planner::LogicalOperator* logicalOperator); + std::unique_ptr mapImportDatabase(planner::LogicalOperator* logicalOperator); std::unique_ptr createCopyRel( std::shared_ptr partitionerSharedState, diff --git a/src/main/client_context.cpp b/src/main/client_context.cpp index aa88b2dbad..87d2e63b9b 100644 --- a/src/main/client_context.cpp +++ b/src/main/client_context.cpp @@ -232,11 +232,10 @@ std::unique_ptr ClientContext::prepareNoLock( try { // parsing if (parsedStatement->getStatementType() != StatementType::TRANSACTION) { - auto txContext = this->transactionContext.get(); - if (txContext->isAutoTransaction()) { - txContext->beginAutoTransaction(preparedStatement->readOnly); + if (transactionContext->isAutoTransaction()) { + transactionContext->beginAutoTransaction(preparedStatement->readOnly); } else { - txContext->validateManualTransaction( + transactionContext->validateManualTransaction( preparedStatement->allowActiveTransaction(), preparedStatement->readOnly); } if (!this->getTx()->isReadOnly()) { @@ -425,5 +424,33 @@ void ClientContext::commitUDFTrx(bool isAutoCommitTrx) { } } +void ClientContext::runQuery(std::string query) { + // TODO(Jimain): this is special for "Import database". Should refactor after we support + // multiple query statements in one Tx. + // Currently, we split multiple query statements into single query and execute them one by one, + // each with an auto transaction. The correct way is to execute them in one transaction. But we + // do not support DDL and copy in one Tx. + if (transactionContext->hasActiveTransaction()) { + transactionContext->commit(); + } + auto parsedStatements = std::vector>(); + try { + parsedStatements = parseQuery(query); + } catch (std::exception& exception) { throw ConnectionException(exception.what()); } + if (parsedStatements.empty()) { + throw ConnectionException("Connection Exception: Query is empty."); + } + try { + for (auto& statement : parsedStatements) { + auto preparedStatement = prepareNoLock(statement.get()); + auto currentQueryResult = + executeAndAutoCommitIfNecessaryNoLock(preparedStatement.get()); + if (!currentQueryResult->isSuccess()) { + throw ConnectionException(currentQueryResult->errMsg); + } + } + } catch (std::exception& exception) { throw ConnectionException(exception.what()); } + return; +} } // namespace main } // namespace kuzu diff --git a/src/parser/parsed_statement_visitor.cpp b/src/parser/parsed_statement_visitor.cpp index 12e8ebbec6..55bbf52219 100644 --- a/src/parser/parsed_statement_visitor.cpp +++ b/src/parser/parsed_statement_visitor.cpp @@ -50,6 +50,9 @@ void StatementVisitor::visit(const Statement& statement) { case StatementType::EXPORT_DATABASE: { visitExportDatabase(statement); } break; + case StatementType::IMPORT_DATABASE: { + visitImportDatabase(statement); + } break; default: KU_UNREACHABLE; } diff --git a/src/parser/transform/transform_port_db.cpp b/src/parser/transform/transform_port_db.cpp index 67443c88b1..2e3a814f9f 100644 --- a/src/parser/transform/transform_port_db.cpp +++ b/src/parser/transform/transform_port_db.cpp @@ -16,5 +16,11 @@ std::unique_ptr Transformer::transformExportDatabase( return exportDB; } +std::unique_ptr Transformer::transformImportDatabase( + CypherParser::KU_ImportDatabaseContext& ctx) { + std::string filePath = transformStringLiteral(*ctx.StringLiteral()); + return std::make_unique(std::move(filePath)); +} + } // namespace parser } // namespace kuzu diff --git a/src/parser/transformer.cpp b/src/parser/transformer.cpp index 11680ba9b6..3350df9853 100644 --- a/src/parser/transformer.cpp +++ b/src/parser/transformer.cpp @@ -50,6 +50,8 @@ std::unique_ptr Transformer::transformStatement(CypherParser::OC_Stat return transformExtension(*ctx.kU_Extension()); } else if (ctx.kU_ExportDatabase()) { return transformExportDatabase(*ctx.kU_ExportDatabase()); + } else if (ctx.kU_ImportDatabase()) { + return transformImportDatabase(*ctx.kU_ImportDatabase()); } else { KU_UNREACHABLE; } diff --git a/src/planner/operator/logical_operator.cpp b/src/planner/operator/logical_operator.cpp index a0ebc5e88f..b2d60c5688 100644 --- a/src/planner/operator/logical_operator.cpp +++ b/src/planner/operator/logical_operator.cpp @@ -101,6 +101,8 @@ std::string LogicalOperatorUtils::logicalOperatorTypeToString(LogicalOperatorTyp return "LOAD"; case LogicalOperatorType::EXPORT_DATABASE: return "EXPORT_DATABASE"; + case LogicalOperatorType::IMPORT_DATABASE: + return "IMPORT_DATABASE"; default: KU_UNREACHABLE; } diff --git a/src/planner/operator/persistent/CMakeLists.txt b/src/planner/operator/persistent/CMakeLists.txt index 02277b82a0..cce9a6f4e6 100644 --- a/src/planner/operator/persistent/CMakeLists.txt +++ b/src/planner/operator/persistent/CMakeLists.txt @@ -6,7 +6,8 @@ add_library(kuzu_planner_persistent logical_delete.cpp logical_merge.cpp logical_set.cpp - logical_export_db.cpp) + logical_export_db.cpp + logical_import_db.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/planner/operator/persistent/logical_import_db.cpp b/src/planner/operator/persistent/logical_import_db.cpp new file mode 100644 index 0000000000..7c2811df81 --- /dev/null +++ b/src/planner/operator/persistent/logical_import_db.cpp @@ -0,0 +1,15 @@ +#include "planner/operator/persistent/logical_import_db.h" + +namespace kuzu { +namespace planner { + +void LogicalImportDatabase::computeFactorizedSchema() { + createEmptySchema(); +} + +void LogicalImportDatabase::computeFlatSchema() { + createEmptySchema(); +} + +} // namespace planner +} // namespace kuzu diff --git a/src/planner/plan/plan_port_db.cpp b/src/planner/plan/plan_port_db.cpp index d9953b3c6b..b9c91e0f60 100644 --- a/src/planner/plan/plan_port_db.cpp +++ b/src/planner/plan/plan_port_db.cpp @@ -1,7 +1,9 @@ #include "binder/copy/bound_export_database.h" +#include "binder/copy/bound_import_database.h" #include "common/string_utils.h" #include "planner/operator/persistent/logical_copy_to.h" #include "planner/operator/persistent/logical_export_db.h" +#include "planner/operator/persistent/logical_import_db.h" #include "planner/planner.h" using namespace kuzu::binder; using namespace kuzu::storage; @@ -39,5 +41,16 @@ std::unique_ptr Planner::planExportDatabase(const BoundStatement& s return plan; } +std::unique_ptr Planner::planImportDatabase(const BoundStatement& statement) { + auto& boundImportDatabase = + ku_dynamic_cast(statement); + auto filePath = boundImportDatabase.getFilePath(); + auto query = boundImportDatabase.getQuery(); + auto plan = std::make_unique(); + auto importDatabase = make_shared(query); + plan->setLastOperator(std::move(importDatabase)); + return plan; +} + } // namespace planner } // namespace kuzu diff --git a/src/planner/planner.cpp b/src/planner/planner.cpp index 502cd89728..087bd331d8 100644 --- a/src/planner/planner.cpp +++ b/src/planner/planner.cpp @@ -60,6 +60,9 @@ std::unique_ptr Planner::getBestPlan(const BoundStatement& statemen case StatementType::EXPORT_DATABASE: { plan = planExportDatabase(statement); } break; + case StatementType::IMPORT_DATABASE: { + plan = planImportDatabase(statement); + } break; default: KU_UNREACHABLE; } diff --git a/src/processor/map/map_port_db.cpp b/src/processor/map/map_port_db.cpp index f7a5fd5ced..83909ec25a 100644 --- a/src/processor/map/map_port_db.cpp +++ b/src/processor/map/map_port_db.cpp @@ -1,5 +1,7 @@ #include "planner/operator/persistent/logical_export_db.h" +#include "planner/operator/persistent/logical_import_db.h" #include "processor/operator/persistent/export_db.h" +#include "processor/operator/persistent/import_db.h" #include "processor/plan_mapper.h" using namespace kuzu::common; @@ -23,5 +25,13 @@ std::unique_ptr PlanMapper::mapExportDatabase( exportDatabase->getExpressionsForPrinting(), std::move(children)); } +std::unique_ptr PlanMapper::mapImportDatabase( + planner::LogicalOperator* logicalOperator) { + auto importDatabase = + ku_dynamic_cast(logicalOperator); + std::unique_ptr resultSetDescriptor; + return std::make_unique( + importDatabase->getQuery(), getOperatorID(), importDatabase->getExpressionsForPrinting()); +} } // namespace processor } // namespace kuzu diff --git a/src/processor/map/plan_mapper.cpp b/src/processor/map/plan_mapper.cpp index fb54c8fe57..5167a1636d 100644 --- a/src/processor/map/plan_mapper.cpp +++ b/src/processor/map/plan_mapper.cpp @@ -171,6 +171,9 @@ std::unique_ptr PlanMapper::mapOperator(LogicalOperator* logic case LogicalOperatorType::EXPORT_DATABASE: { physicalOperator = mapExportDatabase(logicalOperator); } break; + case LogicalOperatorType::IMPORT_DATABASE: { + physicalOperator = mapImportDatabase(logicalOperator); + } break; default: KU_UNREACHABLE; } diff --git a/src/processor/operator/persistent/CMakeLists.txt b/src/processor/operator/persistent/CMakeLists.txt index 707831212e..3c8a9693d8 100644 --- a/src/processor/operator/persistent/CMakeLists.txt +++ b/src/processor/operator/persistent/CMakeLists.txt @@ -17,7 +17,8 @@ add_library(kuzu_processor_operator_persistent merge.cpp set.cpp set_executor.cpp - export_db.cpp) + export_db.cpp + import_db.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/processor/operator/persistent/import_db.cpp b/src/processor/operator/persistent/import_db.cpp new file mode 100644 index 0000000000..bc6dd07c21 --- /dev/null +++ b/src/processor/operator/persistent/import_db.cpp @@ -0,0 +1,17 @@ +#include "processor/operator/persistent/import_db.h" + +using namespace kuzu::common; +using namespace kuzu::transaction; +using namespace kuzu::catalog; + +namespace kuzu { +namespace processor { + +using std::stringstream; + +bool ImportDB::getNextTuplesInternal(ExecutionContext* context) { + context->clientContext->runQuery(query); + return false; +} +} // namespace processor +} // namespace kuzu diff --git a/src/processor/operator/physical_operator.cpp b/src/processor/operator/physical_operator.cpp index b0a62f706e..89cc930a63 100644 --- a/src/processor/operator/physical_operator.cpp +++ b/src/processor/operator/physical_operator.cpp @@ -129,6 +129,8 @@ std::string PhysicalOperatorUtils::operatorTypeToString(PhysicalOperatorType ope return "PROFILE"; case PhysicalOperatorType::EXPORT_DATABASE: return "EXPORT_DATABASE"; + case PhysicalOperatorType::IMPORT_DATABASE: + return "IMPORT_DATABASE"; default: KU_UNREACHABLE; } diff --git a/test/graph_test/base_graph_test.cpp b/test/graph_test/base_graph_test.cpp index 275b43eae7..e77b0b1890 100644 --- a/test/graph_test/base_graph_test.cpp +++ b/test/graph_test/base_graph_test.cpp @@ -74,56 +74,6 @@ void TestHelper::executeScript(const std::string& cypherScript, Connection& conn } } -// TODO(Jimain): should remove after implementing import database -void TestHelper::executeImportDBScript(const std::string& cypherScript, Connection& conn) { - std::cout << "cypherScript: " << cypherScript << std::endl; - if (!std::filesystem::exists(cypherScript)) { - std::cout << "cypherScript: " << cypherScript << " doesn't exist. Skipping..." << std::endl; - return; - } - std::ifstream file(cypherScript); - if (!file.is_open()) { - throw Exception(stringFormat("Error opening file: {}, errno: {}.", cypherScript, errno)); - } - std::string line; - while (getline(file, line)) { - // If this is a COPY statement, we need to append the KUZU_ROOT_DIRECTORY to the csv - // file path. There maybe multiple csv files in the line, so we need to find all of them. - std::vector csvFilePaths; - size_t index = 0; - while (true) { - size_t start = line.find('"', index); - if (start == std::string::npos) { - break; - } - size_t end = line.find('"', start + 1); - if (end == std::string::npos) { - // No matching double quote, must not be a file path. - break; - } - std::string substr = line.substr(start + 1, end - start - 1); - // convert to lower case - auto substrLower = substr; - std::transform(substrLower.begin(), substrLower.end(), substrLower.begin(), ::tolower); - if (substrLower.find(".csv") != std::string::npos || - substrLower.find(".parquet") != std::string::npos || - substrLower.find(".npy") != std::string::npos || - substrLower.find(".ttl") != std::string::npos || - substrLower.find(".nq") != std::string::npos) { - csvFilePaths.push_back(substr); - } - index = end + 1; - } - std::cout << "Starting to execute query: " << line << std::endl; - auto result = conn.query(line); - std::cout << "Executed query: " << line << std::endl; - if (!result->isSuccess()) { - throw Exception(stringFormat( - "Failed to execute statement: {}.\nError: {}", line, result->getErrorMessage())); - } - } -} - void BaseGraphTest::createDB() { if (database != nullptr) { database.reset(); diff --git a/test/graph_test/graph_test.cpp b/test/graph_test/graph_test.cpp index ad3d67a7e5..c2c26fbc41 100644 --- a/test/graph_test/graph_test.cpp +++ b/test/graph_test/graph_test.cpp @@ -51,11 +51,5 @@ void DBTest::createNewDB() { createDBAndConn(); } -void DBTest::importDB(std::string filePath) { - TestHelper::executeImportDBScript(filePath + "/" + TestHelper::SCHEMA_FILE_NAME, *conn); - TestHelper::executeImportDBScript(filePath + "/" + TestHelper::COPY_FILE_NAME, *conn); - TestHelper::executeImportDBScript(filePath + "/macro.cypher", *conn); -} - } // namespace testing } // namespace kuzu diff --git a/test/include/graph_test/graph_test.h b/test/include/graph_test/graph_test.h index a48217ee8c..0696f89edd 100644 --- a/test/include/graph_test/graph_test.h +++ b/test/include/graph_test/graph_test.h @@ -42,7 +42,6 @@ class DBTest : public PrivateGraphTest { initGraph(); } void createDB(uint64_t checkpointWaitTimeout); - void importDB(std::string filePath); void createNewDB(); inline void runTest(const std::vector>& statements, @@ -51,15 +50,19 @@ class DBTest : public PrivateGraphTest { std::set connNames = std::set()) { for (auto& statement : statements) { // special for testing import and export test cases + if (statement->removeFileFlag) { + auto filePath = statement->removeFilePath; + filePath.erase(std::remove(filePath.begin(), filePath.end(), '\"'), filePath.end()); + removeDir(filePath); + continue; + } if (statement->importDBFlag) { auto filePath = statement->importFilePath; filePath.erase(std::remove(filePath.begin(), filePath.end(), '\"'), filePath.end()); createNewDB(); - importDB(filePath); BaseGraphTest::setIEDatabasePath(filePath); continue; } - if (statement->reloadDBFlag) { createDB(checkpointWaitTimeout); createConns(connNames); diff --git a/test/include/test_helper/test_helper.h b/test/include/test_helper/test_helper.h index 926735ff1f..1c95e26b82 100644 --- a/test/include/test_helper/test_helper.h +++ b/test/include/test_helper/test_helper.h @@ -35,8 +35,6 @@ class TestHelper { static void executeScript(const std::string& path, main::Connection& conn); - static void executeImportDBScript(const std::string& cypherScript, main::Connection& conn); - static std::string getTestListFile() { return appendKuzuRootPath(std::string(E2E_TEST_FILES_DIRECTORY) + "/test_list"); } diff --git a/test/include/test_runner/test_group.h b/test/include/test_runner/test_group.h index 86de579471..7bbb7fe6f9 100644 --- a/test/include/test_runner/test_group.h +++ b/test/include/test_runner/test_group.h @@ -18,6 +18,7 @@ struct TestStatement { uint64_t numThreads = 4; std::string encodedJoin; bool expectedError = false; + bool expectedErrorRegex = false; std::string errorMessage; bool expectedOk = false; uint64_t expectedNumTuples = 0; @@ -34,6 +35,8 @@ struct TestStatement { std::string expectedHashValue; // for export and import db std::string importFilePath; + bool removeFileFlag = false; + std::string removeFilePath; }; // Test group is a collection of test cases in a single file. diff --git a/test/include/test_runner/test_parser.h b/test/include/test_runner/test_parser.h index ad8a994790..c9214c0bc9 100644 --- a/test/include/test_runner/test_parser.h +++ b/test/include/test_runner/test_parser.h @@ -44,7 +44,8 @@ enum class TokenType { SET, // special for testing exporting database - IMPORT_DATABASE + IMPORT_DATABASE, + REMOVE_FILE }; const std::unordered_map tokenMap = {{"-GROUP", TokenType::GROUP}, @@ -64,7 +65,8 @@ const std::unordered_map tokenMap = {{"-GROUP", TokenTyp {"-BATCH_STATEMENTS", TokenType::BATCH_STATEMENTS}, {"-RELOADDB", TokenType::RELOADDB}, {"-CREATE_CONNECTION", TokenType::CREATE_CONNECTION}, {"]", TokenType::END_OF_STATEMENT_BLOCK}, {"----", TokenType::RESULT}, {"--", TokenType::SEPARATOR}, {"#", TokenType::EMPTY}, - {"-SET", TokenType::SET}, {"-IMPORT_DATABASE", TokenType::IMPORT_DATABASE}}; + {"-SET", TokenType::SET}, {"-IMPORT_DATABASE", TokenType::IMPORT_DATABASE}, + {"-REMOVE_FILE", TokenType::REMOVE_FILE}}; class LogicToken { public: diff --git a/test/test_files/copy/export_db.test b/test/test_files/copy/export_import_db.test similarity index 72% rename from test/test_files/copy/export_db.test rename to test/test_files/copy/export_import_db.test index a9788e92b5..e4690ab4d9 100644 --- a/test/test_files/copy/export_db.test +++ b/test/test_files/copy/export_import_db.test @@ -3,7 +3,7 @@ -- --CASE ExportDatabaseDefault +-CASE ExportImportDatabaseDefault -STATEMENT create macro addWithDefault(a,b:=3) as a + b; ---- ok @@ -15,6 +15,8 @@ -STATEMENT Export Database "${KUZU_EXPORT_DB_DIRECTORY}_case1/demo-db" ---- ok -IMPORT_DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case1/demo-db" +-STATEMENT IMPORT DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case1/demo-db" +---- ok -STATEMENT MATCH (u:User) WHERE u.name = 'Adam' SET u.age = 50 ---- ok -LOG ReturnAge @@ -25,10 +27,12 @@ ---- 1 5 --CASE ExportDatabaseWithCSVOption +-CASE ExportImportDatabaseWithCSVOption -STATEMENT Export Database "${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db2" (format="csv", header=true) ---- ok -IMPORT_DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db2" +-STATEMENT IMPORT DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db2" +---- ok -STATEMENT MATCH (u:User) WHERE u.name = 'Adam' SET u.age = 50 ---- ok -LOG ReturnAge @@ -39,10 +43,12 @@ ---- error Binder exception: Directory ${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db2 already exists. --CASE ExportDatabaseWithPARQUET +-CASE ExportImportDatabaseWithPARQUET -STATEMENT Export Database "${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db3" (format='parquet') ---- ok -IMPORT_DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db3" +-STATEMENT IMPORT DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db3" +---- ok -STATEMENT MATCH (u:User) WHERE u.name = 'Adam' SET u.age = 50 ---- ok -LOG ReturnAge @@ -50,7 +56,7 @@ Binder exception: Directory ${KUZU_EXPORT_DB_DIRECTORY}_case2/demo-db2 already e ---- 1 50 --CASE ExportDatabaseError +-CASE ExportImportDatabaseError -STATEMENT Export Database "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db4" (format='TURTLE') ---- error Binder exception: Unsupported file type: TURTLE. @@ -69,10 +75,14 @@ Binder exception: Only export to csv can have options. -STATEMENT Export Database "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db4" (header=true) ---- ok + +-IMPORT_DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db5" +-STATEMENT IMPORT DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db5" +---- error +Binder exception: Directory ${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db5 does not exist. + +-REMOVE_FILE "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db4/schema.cypher" -IMPORT_DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db4" --STATEMENT MATCH (u:User) WHERE u.name = 'Adam' SET u.age = 50 ----- ok --LOG ReturnAge --STATEMENT MATCH (u:User) WHERE u.name='Adam' RETURN u.age ----- 1 -50 +-STATEMENT IMPORT DATABASE "${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db4" +---- error(regex) +Binder exception: File ${KUZU_EXPORT_DB_DIRECTORY}_case3/demo-db4/schema.cypher does not exist. diff --git a/test/test_runner/test_parser.cpp b/test/test_runner/test_parser.cpp index b88764dcd8..8441d94034 100644 --- a/test/test_runner/test_parser.cpp +++ b/test/test_runner/test_parser.cpp @@ -124,6 +124,10 @@ void TestParser::extractExpectedResult(TestStatement* statement) { statement->expectedError = true; statement->errorMessage = extractTextBeforeNextStatement(); replaceVariables(statement->errorMessage); + } else if (result == "error(regex)") { + statement->expectedErrorRegex = true; + statement->errorMessage = extractTextBeforeNextStatement(); + replaceVariables(statement->errorMessage); } else if (result.substr(0, 4) == "hash") { statement->expectHash = true; checkMinimumParams(1); @@ -196,13 +200,19 @@ TestStatement* TestParser::extractStatement( return statement; } case TokenType::IMPORT_DATABASE: { - // TODO(Jiamin): special here, should remove after implementing import database statement->importDBFlag = true; auto filePath = getParam(1); replaceVariables(filePath); statement->importFilePath = filePath; return statement; } + case TokenType::REMOVE_FILE: { + statement->removeFileFlag = true; + auto filePath = getParam(1); + replaceVariables(filePath); + statement->removeFilePath = filePath; + return statement; + } case TokenType::STATEMENT: { std::string query = paramsToString(1); extractConnName(query, statement); diff --git a/test/test_runner/test_runner.cpp b/test/test_runner/test_runner.cpp index e8505ed2d0..055d3ae6f3 100644 --- a/test/test_runner/test_runner.cpp +++ b/test/test_runner/test_runner.cpp @@ -68,7 +68,8 @@ bool TestRunner::testStatement( preparedStatement = conn.prepareNoLock(parsedStatement.get(), true, statement->encodedJoin); } // Check for wrong statements - if (!statement->expectedError && !preparedStatement->isSuccess()) { + if (!statement->expectedError && !statement->expectedErrorRegex && + !preparedStatement->isSuccess()) { spdlog::error(preparedStatement->getErrorMessage()); return false; } @@ -99,6 +100,19 @@ bool TestRunner::checkLogicalPlan(std::unique_ptr& preparedSt return true; } spdlog::info("EXPECTED ERROR: {}", expectedError); + } else if (statement->expectedErrorRegex) { + std::string expectedError = StringUtils::rtrim(result->getErrorMessage()); + std::regex pattern("^.*[\\\\/]+([^\\\\/]+)$"); + std::smatch match1; + bool is_match1 = std::regex_match(expectedError, match1, pattern); + std::smatch match2; + bool is_match2 = std::regex_match(statement->errorMessage, match2, pattern); + if (is_match1 && is_match2) { + if (match1[1] == match2[1]) { + return true; + } + } + spdlog::info("EXPECTED ERROR: {}", expectedError); } else if (statement->expectedOk && result->isSuccess()) { return true; } else { diff --git a/third_party/antlr4_cypher/cypher_lexer.cpp b/third_party/antlr4_cypher/cypher_lexer.cpp index 01ecdbddc0..ef3eedf02c 100644 --- a/third_party/antlr4_cypher/cypher_lexer.cpp +++ b/third_party/antlr4_cypher/cypher_lexer.cpp @@ -63,24 +63,25 @@ void cypherlexerLexerInitialize() { "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", "T__44", "CALL", "COMMENT", "MACRO", "GLOB", - "COPY", "FROM", "COLUMN", "EXPORT", "DATABASE", "NODE", "TABLE", "GROUP", - "RDFGRAPH", "DROP", "ALTER", "DEFAULT", "RENAME", "ADD", "PRIMARY", - "KEY", "REL", "TO", "EXPLAIN", "PROFILE", "BEGIN", "TRANSACTION", - "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", - "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", "ALL", - "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", "MERGE", - "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", "STAR", - "AS", "ORDER", "BY", "L_SKIP", "LIMIT", "ASCENDING", "ASC", "DESCENDING", - "DESC", "WHERE", "SHORTEST", "OR", "XOR", "AND", "NOT", "INVALID_NOT_EQUAL", - "MINUS", "FACTORIAL", "COLON", "IN", "STARTS", "ENDS", "CONTAINS", - "IS", "NULL_", "TRUE", "FALSE", "COUNT", "EXISTS", "CASE", "ELSE", - "END", "WHEN", "THEN", "StringLiteral", "EscapedChar", "DecimalInteger", - "HexLetter", "HexDigit", "Digit", "NonZeroDigit", "NonZeroOctDigit", - "ZeroDigit", "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart", - "IdentifierPart", "EscapedSymbolicName", "SP", "WHITESPACE", "Comment", - "FF", "EscapedSymbolicName_0", "RS", "ID_Continue", "Comment_1", "StringLiteral_1", - "Comment_3", "Comment_2", "GS", "FS", "CR", "Sc", "SPACE", "Pc", "TAB", - "StringLiteral_0", "LF", "VT", "US", "ID_Start", "Unknown" + "COPY", "FROM", "COLUMN", "EXPORT", "IMPORT", "DATABASE", "NODE", + "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", "DEFAULT", "RENAME", + "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", "PROFILE", "BEGIN", + "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", + "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", + "ALL", "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", + "MERGE", "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", + "STAR", "AS", "ORDER", "BY", "L_SKIP", "LIMIT", "ASCENDING", "ASC", + "DESCENDING", "DESC", "WHERE", "SHORTEST", "OR", "XOR", "AND", "NOT", + "INVALID_NOT_EQUAL", "MINUS", "FACTORIAL", "COLON", "IN", "STARTS", + "ENDS", "CONTAINS", "IS", "NULL_", "TRUE", "FALSE", "COUNT", "EXISTS", + "CASE", "ELSE", "END", "WHEN", "THEN", "StringLiteral", "EscapedChar", + "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", + "NonZeroOctDigit", "ZeroDigit", "RegularDecimalReal", "UnescapedSymbolicName", + "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", "SP", + "WHITESPACE", "Comment", "FF", "EscapedSymbolicName_0", "RS", "ID_Continue", + "Comment_1", "StringLiteral_1", "Comment_3", "Comment_2", "GS", "FS", + "CR", "Sc", "SPACE", "Pc", "TAB", "StringLiteral_0", "LF", "VT", "US", + "ID_Start", "Unknown" }, std::vector{ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -98,18 +99,18 @@ void cypherlexerLexerInitialize() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "'*'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'0'" + "", "'*'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'0'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "CALL", "COMMENT", - "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", "DATABASE", "NODE", - "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", "DEFAULT", "RENAME", - "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", "PROFILE", "BEGIN", - "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", + "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", "IMPORT", "DATABASE", + "NODE", "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", "DEFAULT", + "RENAME", "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", "PROFILE", + "BEGIN", "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", "ALL", "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", "MERGE", "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", @@ -125,7 +126,7 @@ void cypherlexerLexerInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,0,149,1157,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,0,150,1166,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2, 14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2, 21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2, @@ -150,265 +151,266 @@ void cypherlexerLexerInitialize() { 7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152, 7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164, - 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,1,0,1,0,1,1,1,1, - 1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10, - 1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,15,1,15, - 1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,20,1,20,1,21, - 1,21,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27, - 1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34, - 1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,40,1,40,1,41,1,41, - 1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46, - 1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48, - 1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51, - 1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53, - 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55, - 1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57, - 1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59, - 1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61, - 1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63, - 1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67, - 1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68, - 1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72, - 1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75, - 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75, - 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76, - 1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77, - 1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77, - 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79, - 1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81, - 1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84, + 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,1,0, + 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1, + 9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14, + 1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,20, + 1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26, + 1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33, + 1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,40,1,40, + 1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,46, + 1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48, + 1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50, + 1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52, + 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54, + 1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57, + 1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58, + 1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63, + 1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65, + 1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68, + 1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70, + 1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72, + 1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74, + 1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78, + 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78, + 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79, + 1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81, + 1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83, 1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85, - 1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87, - 1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,91, - 1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93, - 1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95, - 1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,97,1,97,1,97,1,98,1,98,1,98, - 1,98,1,98,1,98,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,101,1,101, - 1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102, - 1,102,1,102,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104, - 1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,106,1,106, - 1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, - 1,107,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110, - 1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,113,1,113,1,114,1,114,1,115, - 1,115,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118, - 1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119, - 1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122, - 1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124, - 1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126, - 1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,129, - 1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131, - 5,131,978,8,131,10,131,12,131,981,9,131,1,131,1,131,1,131,1,131,5,131, - 987,8,131,10,131,12,131,990,9,131,1,131,3,131,993,8,131,1,132,1,132,1, - 132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, - 1,132,1,132,1,132,1,132,3,132,1013,8,132,1,133,1,133,1,133,5,133,1018, - 8,133,10,133,12,133,1021,9,133,3,133,1023,8,133,1,134,3,134,1026,8,134, - 1,135,1,135,3,135,1030,8,135,1,136,1,136,3,136,1034,8,136,1,137,1,137, - 3,137,1038,8,137,1,138,1,138,1,139,1,139,1,140,5,140,1045,8,140,10,140, - 12,140,1048,9,140,1,140,1,140,4,140,1052,8,140,11,140,12,140,1053,1,141, - 1,141,5,141,1058,8,141,10,141,12,141,1061,9,141,1,142,1,142,3,142,1065, - 8,142,1,143,1,143,3,143,1069,8,143,1,144,1,144,5,144,1073,8,144,10,144, - 12,144,1076,9,144,1,144,4,144,1079,8,144,11,144,12,144,1080,1,145,4,145, - 1084,8,145,11,145,12,145,1085,1,146,1,146,1,146,1,146,1,146,1,146,1,146, - 1,146,1,146,1,146,1,146,1,146,3,146,1100,8,146,1,147,1,147,1,147,1,147, - 1,147,1,147,5,147,1108,8,147,10,147,12,147,1111,9,147,1,147,1,147,1,147, - 1,148,1,148,1,149,1,149,1,150,1,150,1,151,1,151,1,152,1,152,1,153,1,153, - 1,154,1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159, - 1,160,1,160,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165, - 1,166,1,166,1,167,1,167,1,168,1,168,0,0,169,1,1,3,2,5,3,7,4,9,5,11,6, - 13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18, - 37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, - 30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41, - 83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105, - 53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125, - 63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145, - 73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165, - 83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185, - 93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102, - 205,103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111, - 223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120, - 241,121,243,122,245,123,247,124,249,125,251,126,253,127,255,128,257,129, - 259,130,261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138, - 277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147, - 295,148,297,0,299,0,301,0,303,0,305,0,307,0,309,0,311,0,313,0,315,0,317, - 0,319,0,321,0,323,0,325,0,327,0,329,0,331,0,333,0,335,0,337,149,1,0,45, - 2,0,67,67,99,99,2,0,65,65,97,97,2,0,76,76,108,108,2,0,79,79,111,111,2, - 0,77,77,109,109,2,0,69,69,101,101,2,0,78,78,110,110,2,0,84,84,116,116, - 2,0,82,82,114,114,2,0,71,71,103,103,2,0,66,66,98,98,2,0,80,80,112,112, - 2,0,89,89,121,121,2,0,70,70,102,102,2,0,85,85,117,117,2,0,88,88,120,120, - 2,0,68,68,100,100,2,0,83,83,115,115,2,0,72,72,104,104,2,0,73,73,105,105, - 2,0,75,75,107,107,2,0,87,87,119,119,13,0,34,34,39,39,66,66,70,70,78,78, - 82,82,84,84,92,92,98,98,102,102,110,110,114,114,116,116,2,0,65,70,97, - 102,8,0,160,160,5760,5760,6158,6158,8192,8202,8232,8233,8239,8239,8287, - 8287,12288,12288,1,0,12,12,1,0,96,96,1,0,30,30,768,0,48,57,65,90,95,95, - 97,122,170,170,181,181,183,183,186,186,192,214,216,246,248,705,710,721, - 736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,906,908,908, - 910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376, - 1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519, - 1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791, - 1791,1808,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112, - 2139,2144,2154,2160,2183,2185,2190,2200,2273,2275,2403,2406,2415,2417, - 2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492, - 2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556, - 2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610, - 2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641, - 2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707, - 2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768, - 2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835, - 2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901, - 2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958, - 2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990, - 3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072, - 3084,3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157, - 3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214, - 3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285, - 3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346, - 3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457, - 3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535, - 3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664, - 3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776, - 3780,3782,3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872, - 3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974, - 3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301, - 4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704, - 4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808, - 4822,4824,4880,4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024, - 5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888, - 5909,5919,5940,5952,5971,5984,5996,5998,6000,6002,6003,6016,6099,6103, - 6103,6108,6109,6112,6121,6155,6157,6159,6169,6176,6264,6272,6314,6320, - 6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576, - 6601,6608,6618,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823, - 6823,6832,6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168, - 7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380, - 7418,7424,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027, - 8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134, - 8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8276, - 8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450, - 8450,8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488, - 8488,8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499, - 11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647, - 11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720, - 11726,11728,11734,11736,11742,11744,11775,12293,12295,12321,12335,12337, - 12341,12344,12348,12353,12438,12441,12447,12449,12538,12540,12543,12549, - 12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192, - 42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775, - 42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994, - 43047,43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259, - 43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488, - 43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739, - 43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808, - 43814,43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016, - 44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256, - 64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320, - 64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008, - 65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142, - 65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474, - 65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576, - 65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045, - 66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384, - 66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720, - 66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940, - 66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003, - 67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506, - 67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647, - 67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872, - 67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117, - 68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288, - 68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608, - 68680,68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291, - 69292,69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552, - 69572,69600,69622,69632,69702,69734,69749,69759,69818,69826,69826,69840, - 69864,69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006, - 70006,70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163, - 70199,70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303, - 70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419, - 70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475, - 70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656, - 70730,70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040, - 71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296, - 71352,71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680, - 71738,71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960, - 71989,71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154, - 72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368, - 72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850, - 72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020, - 73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104, - 73105,73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534, - 73538,73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712, - 77808,77824,78895,78912,78933,82944,83526,92160,92728,92736,92766,92768, - 92777,92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992, - 92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031, - 94087,94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352, - 101589,101632,101640,110576,110579,110581,110587,110589,110590,110592, - 110882,110898,110898,110928,110930,110933,110933,110948,110951,110960, - 111355,113664,113770,113776,113788,113792,113800,113808,113817,113821, - 113822,118528,118573,118576,118598,119141,119145,119149,119154,119163, - 119170,119173,119179,119210,119213,119362,119364,119808,119892,119894, - 119964,119966,119967,119970,119970,119973,119974,119977,119980,119982, - 119993,119995,119995,119997,120003,120005,120069,120071,120074,120077, - 120084,120086,120092,120094,120121,120123,120126,120128,120132,120134, - 120134,120138,120144,120146,120485,120488,120512,120514,120538,120540, - 120570,120572,120596,120598,120628,120630,120654,120656,120686,120688, - 120712,120714,120744,120746,120770,120772,120779,120782,120831,121344, - 121398,121403,121452,121461,121461,121476,121476,121499,121503,121505, - 121519,122624,122654,122661,122666,122880,122886,122888,122904,122907, - 122913,122915,122916,122918,122922,122928,122989,123023,123023,123136, - 123180,123184,123197,123200,123209,123214,123214,123536,123566,123584, - 123641,124112,124153,124896,124902,124904,124907,124909,124910,124912, - 124926,124928,125124,125136,125142,125184,125259,125264,125273,126464, - 126467,126469,126495,126497,126498,126500,126500,126503,126503,126505, - 126514,126516,126519,126521,126521,126523,126523,126530,126530,126535, - 126535,126537,126537,126539,126539,126541,126543,126545,126546,126548, - 126548,126551,126551,126553,126553,126555,126555,126557,126557,126559, - 126559,126561,126562,126564,126564,126567,126570,126572,126578,126580, - 126583,126585,126588,126590,126590,126592,126601,126603,126619,126625, - 126627,126629,126633,126635,126651,130032,130041,131072,173791,173824, - 177977,177984,178205,178208,183969,183984,191456,194560,195101,196608, - 201546,201552,205743,917760,917999,1,0,42,42,2,0,39,39,92,92,2,0,10,10, - 13,13,1,0,47,47,1,0,29,29,1,0,28,28,1,0,13,13,21,0,36,36,162,165,1423, - 1423,1547,1547,2046,2047,2546,2547,2555,2555,2801,2801,3065,3065,3647, - 3647,6107,6107,8352,8384,43064,43064,65020,65020,65129,65129,65284,65284, - 65504,65505,65509,65510,73693,73696,123647,123647,126128,126128,1,0,32, - 32,6,0,95,95,8255,8256,8276,8276,65075,65076,65101,65103,65343,65343, - 1,0,9,9,2,0,34,34,92,92,1,0,10,10,1,0,11,11,1,0,31,31,659,0,65,90,97, - 122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748, - 748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910, - 929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514, - 1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775, - 1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026, - 2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136, - 2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384, - 2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482, - 2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556, - 2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617, - 2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736, - 2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828, - 2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909, - 2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970, - 2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084, - 3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169, - 3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261, - 3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389, - 3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515, - 3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716, - 3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780, - 3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138, - 4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225, - 4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685, - 4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789, - 4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954, - 4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866, - 5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067, - 6103,6103,6108,6108,6176,6264,6272,6312,6314,6314,6320,6389,6400,6430, - 6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823, - 6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247, - 7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414, - 7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023, - 8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126, - 8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188, - 8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469, - 8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521, - 8526,8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559, + 1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87, + 1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89, + 1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95, + 1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96, + 1,96,1,97,1,97,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100, + 1,100,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102, + 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104, + 1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, + 1,105,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, + 1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, + 1,113,1,113,1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,117,1,117,1,117, + 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119, + 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121, + 1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124,1,124, + 1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126, + 1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128, + 1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130, + 1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,5,132,987,8,132,10,132, + 12,132,990,9,132,1,132,1,132,1,132,1,132,5,132,996,8,132,10,132,12,132, + 999,9,132,1,132,3,132,1002,8,132,1,133,1,133,1,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, + 3,133,1022,8,133,1,134,1,134,1,134,5,134,1027,8,134,10,134,12,134,1030, + 9,134,3,134,1032,8,134,1,135,3,135,1035,8,135,1,136,1,136,3,136,1039, + 8,136,1,137,1,137,3,137,1043,8,137,1,138,1,138,3,138,1047,8,138,1,139, + 1,139,1,140,1,140,1,141,5,141,1054,8,141,10,141,12,141,1057,9,141,1,141, + 1,141,4,141,1061,8,141,11,141,12,141,1062,1,142,1,142,5,142,1067,8,142, + 10,142,12,142,1070,9,142,1,143,1,143,3,143,1074,8,143,1,144,1,144,3,144, + 1078,8,144,1,145,1,145,5,145,1082,8,145,10,145,12,145,1085,9,145,1,145, + 4,145,1088,8,145,11,145,12,145,1089,1,146,4,146,1093,8,146,11,146,12, + 146,1094,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147, + 1,147,1,147,3,147,1109,8,147,1,148,1,148,1,148,1,148,1,148,1,148,5,148, + 1117,8,148,10,148,12,148,1120,9,148,1,148,1,148,1,148,1,149,1,149,1,150, + 1,150,1,151,1,151,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1,155,1,156, + 1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,160,1,160,1,161,1,161,1,162, + 1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167,1,168, + 1,168,1,169,1,169,0,0,170,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19, + 10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21, + 43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65, + 33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44, + 89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55, + 111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65, + 131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75, + 151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85, + 171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95, + 191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209, + 105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113,227, + 114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245, + 123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131,263, + 132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281, + 141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149,299, + 0,301,0,303,0,305,0,307,0,309,0,311,0,313,0,315,0,317,0,319,0,321,0,323, + 0,325,0,327,0,329,0,331,0,333,0,335,0,337,0,339,150,1,0,45,2,0,67,67, + 99,99,2,0,65,65,97,97,2,0,76,76,108,108,2,0,79,79,111,111,2,0,77,77,109, + 109,2,0,69,69,101,101,2,0,78,78,110,110,2,0,84,84,116,116,2,0,82,82,114, + 114,2,0,71,71,103,103,2,0,66,66,98,98,2,0,80,80,112,112,2,0,89,89,121, + 121,2,0,70,70,102,102,2,0,85,85,117,117,2,0,88,88,120,120,2,0,73,73,105, + 105,2,0,68,68,100,100,2,0,83,83,115,115,2,0,72,72,104,104,2,0,75,75,107, + 107,2,0,87,87,119,119,13,0,34,34,39,39,66,66,70,70,78,78,82,82,84,84, + 92,92,98,98,102,102,110,110,114,114,116,116,2,0,65,70,97,102,8,0,160, + 160,5760,5760,6158,6158,8192,8202,8232,8233,8239,8239,8287,8287,12288, + 12288,1,0,12,12,1,0,96,96,1,0,30,30,768,0,48,57,65,90,95,95,97,122,170, + 170,181,181,183,183,186,186,192,214,216,246,248,705,710,721,736,740,748, + 748,750,750,768,884,886,887,890,893,895,895,902,906,908,908,910,929,931, + 1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425, + 1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1552, + 1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808, + 1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144, + 2154,2160,2183,2185,2190,2200,2273,2275,2403,2406,2415,2417,2435,2437, + 2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503, + 2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558, + 2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613, + 2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649, + 2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730, + 2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784, + 2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858, + 2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908, + 2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962, + 2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006, + 3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086, + 3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160, + 3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218, + 3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3293, + 3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346,3396,3398, + 3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457,3459,3461, + 3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542, + 3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713, + 3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782, + 3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893, + 3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993, + 4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304, + 4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746, + 4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824, + 4880,4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024,5109,5112, + 5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909,5919, + 5940,5952,5971,5984,5996,5998,6000,6002,6003,6016,6099,6103,6103,6108, + 6109,6112,6121,6155,6157,6159,6169,6176,6264,6272,6314,6320,6389,6400, + 6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608, + 6618,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832, + 6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168,7223,7232, + 7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424, + 7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029, + 8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144, + 8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8276,8276,8305, + 8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455, + 8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490, + 8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507, + 11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670, + 11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726, + 11728,11734,11736,11742,11744,11775,12293,12295,12321,12335,12337,12341, + 12344,12348,12353,12438,12441,12447,12449,12538,12540,12543,12549,12591, + 12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237, + 42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783, + 42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43047, + 43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259, + 43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518, + 43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741, + 43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814, + 43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016,44025, + 44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262, + 64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321, + 64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019, + 65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276, + 65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479, + 65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594, + 65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045, + 66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426, + 66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729, + 66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954, + 66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004, + 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514, + 67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669, + 67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897, + 67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119, + 68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295, + 68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680, + 68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291,69292, + 69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552,69572, + 69600,69622,69632,69702,69734,69749,69759,69818,69826,69826,69840,69864, + 69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006, + 70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163,70199, + 70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312, + 70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440, + 70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477, + 70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730, + 70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040,71093, + 71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352, + 71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680,71738, + 71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,71989, + 71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161, + 72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440, + 72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871, + 72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021, + 73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105, + 73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534,73538, + 73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808, + 77824,78895,78912,78933,82944,83526,92160,92728,92736,92766,92768,92777, + 92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992,92995, + 93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087, + 94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352,101589, + 101632,101640,110576,110579,110581,110587,110589,110590,110592,110882, + 110898,110898,110928,110930,110933,110933,110948,110951,110960,111355, + 113664,113770,113776,113788,113792,113800,113808,113817,113821,113822, + 118528,118573,118576,118598,119141,119145,119149,119154,119163,119170, + 119173,119179,119210,119213,119362,119364,119808,119892,119894,119964, + 119966,119967,119970,119970,119973,119974,119977,119980,119982,119993, + 119995,119995,119997,120003,120005,120069,120071,120074,120077,120084, + 120086,120092,120094,120121,120123,120126,120128,120132,120134,120134, + 120138,120144,120146,120485,120488,120512,120514,120538,120540,120570, + 120572,120596,120598,120628,120630,120654,120656,120686,120688,120712, + 120714,120744,120746,120770,120772,120779,120782,120831,121344,121398, + 121403,121452,121461,121461,121476,121476,121499,121503,121505,121519, + 122624,122654,122661,122666,122880,122886,122888,122904,122907,122913, + 122915,122916,122918,122922,122928,122989,123023,123023,123136,123180, + 123184,123197,123200,123209,123214,123214,123536,123566,123584,123641, + 124112,124153,124896,124902,124904,124907,124909,124910,124912,124926, + 124928,125124,125136,125142,125184,125259,125264,125273,126464,126467, + 126469,126495,126497,126498,126500,126500,126503,126503,126505,126514, + 126516,126519,126521,126521,126523,126523,126530,126530,126535,126535, + 126537,126537,126539,126539,126541,126543,126545,126546,126548,126548, + 126551,126551,126553,126553,126555,126555,126557,126557,126559,126559, + 126561,126562,126564,126564,126567,126570,126572,126578,126580,126583, + 126585,126588,126590,126590,126592,126601,126603,126619,126625,126627, + 126629,126633,126635,126651,130032,130041,131072,173791,173824,177977, + 177984,178205,178208,183969,183984,191456,194560,195101,196608,201546, + 201552,205743,917760,917999,1,0,42,42,2,0,39,39,92,92,2,0,10,10,13,13, + 1,0,47,47,1,0,29,29,1,0,28,28,1,0,13,13,21,0,36,36,162,165,1423,1423, + 1547,1547,2046,2047,2546,2547,2555,2555,2801,2801,3065,3065,3647,3647, + 6107,6107,8352,8384,43064,43064,65020,65020,65129,65129,65284,65284,65504, + 65505,65509,65510,73693,73696,123647,123647,126128,126128,1,0,32,32,6, + 0,95,95,8255,8256,8276,8276,65075,65076,65101,65103,65343,65343,1,0,9, + 9,2,0,34,34,92,92,1,0,10,10,1,0,11,11,1,0,31,31,659,0,65,90,97,122,170, + 170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750, + 750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931, + 1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519, + 1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786, + 1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036, + 2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144, + 2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392, + 2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486, + 2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565, + 2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649, + 2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738, + 2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831, + 2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911, + 2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972, + 2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086, + 3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200, + 3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293, + 3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406, + 3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517, + 3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718, + 3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782, + 3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159, + 4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238, + 4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688, + 4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792, + 4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992, + 5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870, + 5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103, + 6103,6108,6108,6176,6264,6272,6312,6314,6314,6320,6389,6400,6430,6480, + 6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917, + 6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258, + 7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418, + 7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025, + 8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130, + 8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305, + 8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8472, + 8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521,8526, + 8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559, 11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688, 11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736, 11742,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12443, @@ -477,7 +479,7 @@ void cypherlexerLexerInitialize() { 126585,126588,126590,126590,126592,126601,126603,126619,126625,126627, 126629,126633,126635,126651,131072,173791,173824,177977,177984,178205, 178208,183969,183984,191456,194560,195101,196608,201546,201552,205743, - 1169,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, + 1178,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, 1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0, 0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0, 0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, @@ -506,252 +508,254 @@ void cypherlexerLexerInitialize() { 267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0, 277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0, 287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0, - 337,1,0,0,0,1,339,1,0,0,0,3,341,1,0,0,0,5,343,1,0,0,0,7,345,1,0,0,0,9, - 347,1,0,0,0,11,349,1,0,0,0,13,351,1,0,0,0,15,353,1,0,0,0,17,355,1,0,0, - 0,19,357,1,0,0,0,21,359,1,0,0,0,23,362,1,0,0,0,25,365,1,0,0,0,27,367, - 1,0,0,0,29,370,1,0,0,0,31,372,1,0,0,0,33,375,1,0,0,0,35,377,1,0,0,0,37, - 380,1,0,0,0,39,383,1,0,0,0,41,385,1,0,0,0,43,387,1,0,0,0,45,389,1,0,0, - 0,47,391,1,0,0,0,49,394,1,0,0,0,51,396,1,0,0,0,53,398,1,0,0,0,55,400, - 1,0,0,0,57,402,1,0,0,0,59,404,1,0,0,0,61,406,1,0,0,0,63,408,1,0,0,0,65, - 410,1,0,0,0,67,412,1,0,0,0,69,414,1,0,0,0,71,416,1,0,0,0,73,418,1,0,0, - 0,75,420,1,0,0,0,77,422,1,0,0,0,79,424,1,0,0,0,81,426,1,0,0,0,83,428, - 1,0,0,0,85,430,1,0,0,0,87,432,1,0,0,0,89,434,1,0,0,0,91,436,1,0,0,0,93, - 441,1,0,0,0,95,449,1,0,0,0,97,455,1,0,0,0,99,460,1,0,0,0,101,465,1,0, - 0,0,103,470,1,0,0,0,105,477,1,0,0,0,107,484,1,0,0,0,109,493,1,0,0,0,111, - 498,1,0,0,0,113,504,1,0,0,0,115,510,1,0,0,0,117,519,1,0,0,0,119,524,1, - 0,0,0,121,530,1,0,0,0,123,538,1,0,0,0,125,545,1,0,0,0,127,549,1,0,0,0, - 129,557,1,0,0,0,131,561,1,0,0,0,133,565,1,0,0,0,135,568,1,0,0,0,137,576, - 1,0,0,0,139,584,1,0,0,0,141,590,1,0,0,0,143,602,1,0,0,0,145,607,1,0,0, - 0,147,612,1,0,0,0,149,618,1,0,0,0,151,625,1,0,0,0,153,648,1,0,0,0,155, - 657,1,0,0,0,157,682,1,0,0,0,159,690,1,0,0,0,161,700,1,0,0,0,163,706,1, - 0,0,0,165,710,1,0,0,0,167,715,1,0,0,0,169,723,1,0,0,0,171,732,1,0,0,0, - 173,738,1,0,0,0,175,745,1,0,0,0,177,752,1,0,0,0,179,758,1,0,0,0,181,761, - 1,0,0,0,183,765,1,0,0,0,185,772,1,0,0,0,187,779,1,0,0,0,189,784,1,0,0, - 0,191,791,1,0,0,0,193,800,1,0,0,0,195,802,1,0,0,0,197,805,1,0,0,0,199, - 811,1,0,0,0,201,814,1,0,0,0,203,819,1,0,0,0,205,825,1,0,0,0,207,835,1, - 0,0,0,209,839,1,0,0,0,211,850,1,0,0,0,213,855,1,0,0,0,215,861,1,0,0,0, - 217,870,1,0,0,0,219,873,1,0,0,0,221,877,1,0,0,0,223,881,1,0,0,0,225,885, - 1,0,0,0,227,888,1,0,0,0,229,890,1,0,0,0,231,892,1,0,0,0,233,894,1,0,0, - 0,235,897,1,0,0,0,237,904,1,0,0,0,239,909,1,0,0,0,241,918,1,0,0,0,243, - 921,1,0,0,0,245,926,1,0,0,0,247,931,1,0,0,0,249,937,1,0,0,0,251,943,1, - 0,0,0,253,950,1,0,0,0,255,955,1,0,0,0,257,960,1,0,0,0,259,964,1,0,0,0, - 261,969,1,0,0,0,263,992,1,0,0,0,265,994,1,0,0,0,267,1022,1,0,0,0,269, - 1025,1,0,0,0,271,1029,1,0,0,0,273,1033,1,0,0,0,275,1037,1,0,0,0,277,1039, - 1,0,0,0,279,1041,1,0,0,0,281,1046,1,0,0,0,283,1055,1,0,0,0,285,1064,1, - 0,0,0,287,1068,1,0,0,0,289,1078,1,0,0,0,291,1083,1,0,0,0,293,1099,1,0, - 0,0,295,1101,1,0,0,0,297,1115,1,0,0,0,299,1117,1,0,0,0,301,1119,1,0,0, - 0,303,1121,1,0,0,0,305,1123,1,0,0,0,307,1125,1,0,0,0,309,1127,1,0,0,0, - 311,1129,1,0,0,0,313,1131,1,0,0,0,315,1133,1,0,0,0,317,1135,1,0,0,0,319, - 1137,1,0,0,0,321,1139,1,0,0,0,323,1141,1,0,0,0,325,1143,1,0,0,0,327,1145, - 1,0,0,0,329,1147,1,0,0,0,331,1149,1,0,0,0,333,1151,1,0,0,0,335,1153,1, - 0,0,0,337,1155,1,0,0,0,339,340,5,59,0,0,340,2,1,0,0,0,341,342,5,40,0, - 0,342,4,1,0,0,0,343,344,5,41,0,0,344,6,1,0,0,0,345,346,5,44,0,0,346,8, - 1,0,0,0,347,348,5,61,0,0,348,10,1,0,0,0,349,350,5,91,0,0,350,12,1,0,0, - 0,351,352,5,93,0,0,352,14,1,0,0,0,353,354,5,123,0,0,354,16,1,0,0,0,355, - 356,5,125,0,0,356,18,1,0,0,0,357,358,5,124,0,0,358,20,1,0,0,0,359,360, - 5,46,0,0,360,361,5,46,0,0,361,22,1,0,0,0,362,363,5,60,0,0,363,364,5,62, - 0,0,364,24,1,0,0,0,365,366,5,60,0,0,366,26,1,0,0,0,367,368,5,60,0,0,368, - 369,5,61,0,0,369,28,1,0,0,0,370,371,5,62,0,0,371,30,1,0,0,0,372,373,5, - 62,0,0,373,374,5,61,0,0,374,32,1,0,0,0,375,376,5,38,0,0,376,34,1,0,0, - 0,377,378,5,62,0,0,378,379,5,62,0,0,379,36,1,0,0,0,380,381,5,60,0,0,381, - 382,5,60,0,0,382,38,1,0,0,0,383,384,5,43,0,0,384,40,1,0,0,0,385,386,5, - 47,0,0,386,42,1,0,0,0,387,388,5,37,0,0,388,44,1,0,0,0,389,390,5,94,0, - 0,390,46,1,0,0,0,391,392,5,61,0,0,392,393,5,126,0,0,393,48,1,0,0,0,394, - 395,5,46,0,0,395,50,1,0,0,0,396,397,5,36,0,0,397,52,1,0,0,0,398,399,5, - 10216,0,0,399,54,1,0,0,0,400,401,5,12296,0,0,401,56,1,0,0,0,402,403,5, - 65124,0,0,403,58,1,0,0,0,404,405,5,65308,0,0,405,60,1,0,0,0,406,407,5, - 10217,0,0,407,62,1,0,0,0,408,409,5,12297,0,0,409,64,1,0,0,0,410,411,5, - 65125,0,0,411,66,1,0,0,0,412,413,5,65310,0,0,413,68,1,0,0,0,414,415,5, - 173,0,0,415,70,1,0,0,0,416,417,5,8208,0,0,417,72,1,0,0,0,418,419,5,8209, - 0,0,419,74,1,0,0,0,420,421,5,8210,0,0,421,76,1,0,0,0,422,423,5,8211,0, - 0,423,78,1,0,0,0,424,425,5,8212,0,0,425,80,1,0,0,0,426,427,5,8213,0,0, - 427,82,1,0,0,0,428,429,5,8722,0,0,429,84,1,0,0,0,430,431,5,65112,0,0, - 431,86,1,0,0,0,432,433,5,65123,0,0,433,88,1,0,0,0,434,435,5,65293,0,0, - 435,90,1,0,0,0,436,437,7,0,0,0,437,438,7,1,0,0,438,439,7,2,0,0,439,440, - 7,2,0,0,440,92,1,0,0,0,441,442,7,0,0,0,442,443,7,3,0,0,443,444,7,4,0, - 0,444,445,7,4,0,0,445,446,7,5,0,0,446,447,7,6,0,0,447,448,7,7,0,0,448, - 94,1,0,0,0,449,450,7,4,0,0,450,451,7,1,0,0,451,452,7,0,0,0,452,453,7, - 8,0,0,453,454,7,3,0,0,454,96,1,0,0,0,455,456,7,9,0,0,456,457,7,2,0,0, - 457,458,7,3,0,0,458,459,7,10,0,0,459,98,1,0,0,0,460,461,7,0,0,0,461,462, - 7,3,0,0,462,463,7,11,0,0,463,464,7,12,0,0,464,100,1,0,0,0,465,466,7,13, - 0,0,466,467,7,8,0,0,467,468,7,3,0,0,468,469,7,4,0,0,469,102,1,0,0,0,470, - 471,7,0,0,0,471,472,7,3,0,0,472,473,7,2,0,0,473,474,7,14,0,0,474,475, - 7,4,0,0,475,476,7,6,0,0,476,104,1,0,0,0,477,478,7,5,0,0,478,479,7,15, - 0,0,479,480,7,11,0,0,480,481,7,3,0,0,481,482,7,8,0,0,482,483,7,7,0,0, - 483,106,1,0,0,0,484,485,7,16,0,0,485,486,7,1,0,0,486,487,7,7,0,0,487, - 488,7,1,0,0,488,489,7,10,0,0,489,490,7,1,0,0,490,491,7,17,0,0,491,492, - 7,5,0,0,492,108,1,0,0,0,493,494,7,6,0,0,494,495,7,3,0,0,495,496,7,16, - 0,0,496,497,7,5,0,0,497,110,1,0,0,0,498,499,7,7,0,0,499,500,7,1,0,0,500, - 501,7,10,0,0,501,502,7,2,0,0,502,503,7,5,0,0,503,112,1,0,0,0,504,505, - 7,9,0,0,505,506,7,8,0,0,506,507,7,3,0,0,507,508,7,14,0,0,508,509,7,11, - 0,0,509,114,1,0,0,0,510,511,7,8,0,0,511,512,7,16,0,0,512,513,7,13,0,0, - 513,514,7,9,0,0,514,515,7,8,0,0,515,516,7,1,0,0,516,517,7,11,0,0,517, - 518,7,18,0,0,518,116,1,0,0,0,519,520,7,16,0,0,520,521,7,8,0,0,521,522, - 7,3,0,0,522,523,7,11,0,0,523,118,1,0,0,0,524,525,7,1,0,0,525,526,7,2, - 0,0,526,527,7,7,0,0,527,528,7,5,0,0,528,529,7,8,0,0,529,120,1,0,0,0,530, - 531,7,16,0,0,531,532,7,5,0,0,532,533,7,13,0,0,533,534,7,1,0,0,534,535, - 7,14,0,0,535,536,7,2,0,0,536,537,7,7,0,0,537,122,1,0,0,0,538,539,7,8, - 0,0,539,540,7,5,0,0,540,541,7,6,0,0,541,542,7,1,0,0,542,543,7,4,0,0,543, - 544,7,5,0,0,544,124,1,0,0,0,545,546,7,1,0,0,546,547,7,16,0,0,547,548, - 7,16,0,0,548,126,1,0,0,0,549,550,7,11,0,0,550,551,7,8,0,0,551,552,7,19, - 0,0,552,553,7,4,0,0,553,554,7,1,0,0,554,555,7,8,0,0,555,556,7,12,0,0, - 556,128,1,0,0,0,557,558,7,20,0,0,558,559,7,5,0,0,559,560,7,12,0,0,560, - 130,1,0,0,0,561,562,7,8,0,0,562,563,7,5,0,0,563,564,7,2,0,0,564,132,1, - 0,0,0,565,566,7,7,0,0,566,567,7,3,0,0,567,134,1,0,0,0,568,569,7,5,0,0, - 569,570,7,15,0,0,570,571,7,11,0,0,571,572,7,2,0,0,572,573,7,1,0,0,573, - 574,7,19,0,0,574,575,7,6,0,0,575,136,1,0,0,0,576,577,7,11,0,0,577,578, - 7,8,0,0,578,579,7,3,0,0,579,580,7,13,0,0,580,581,7,19,0,0,581,582,7,2, - 0,0,582,583,7,5,0,0,583,138,1,0,0,0,584,585,7,10,0,0,585,586,7,5,0,0, - 586,587,7,9,0,0,587,588,7,19,0,0,588,589,7,6,0,0,589,140,1,0,0,0,590, - 591,7,7,0,0,591,592,7,8,0,0,592,593,7,1,0,0,593,594,7,6,0,0,594,595,7, - 17,0,0,595,596,7,1,0,0,596,597,7,0,0,0,597,598,7,7,0,0,598,599,7,19,0, - 0,599,600,7,3,0,0,600,601,7,6,0,0,601,142,1,0,0,0,602,603,7,8,0,0,603, - 604,7,5,0,0,604,605,7,1,0,0,605,606,7,16,0,0,606,144,1,0,0,0,607,608, - 7,3,0,0,608,609,7,6,0,0,609,610,7,2,0,0,610,611,7,12,0,0,611,146,1,0, - 0,0,612,613,7,21,0,0,613,614,7,8,0,0,614,615,7,19,0,0,615,616,7,7,0,0, - 616,617,7,5,0,0,617,148,1,0,0,0,618,619,7,0,0,0,619,620,7,3,0,0,620,621, - 7,4,0,0,621,622,7,4,0,0,622,623,7,19,0,0,623,624,7,7,0,0,624,150,1,0, - 0,0,625,626,7,0,0,0,626,627,7,3,0,0,627,628,7,4,0,0,628,629,7,4,0,0,629, - 630,7,19,0,0,630,631,7,7,0,0,631,632,5,95,0,0,632,633,7,17,0,0,633,634, - 7,20,0,0,634,635,7,19,0,0,635,636,7,11,0,0,636,637,5,95,0,0,637,638,7, - 0,0,0,638,639,7,18,0,0,639,640,7,5,0,0,640,641,7,0,0,0,641,642,7,20,0, - 0,642,643,7,11,0,0,643,644,7,3,0,0,644,645,7,19,0,0,645,646,7,6,0,0,646, - 647,7,7,0,0,647,152,1,0,0,0,648,649,7,8,0,0,649,650,7,3,0,0,650,651,7, - 2,0,0,651,652,7,2,0,0,652,653,7,10,0,0,653,654,7,1,0,0,654,655,7,0,0, - 0,655,656,7,20,0,0,656,154,1,0,0,0,657,658,7,8,0,0,658,659,7,3,0,0,659, - 660,7,2,0,0,660,661,7,2,0,0,661,662,7,10,0,0,662,663,7,1,0,0,663,664, - 7,0,0,0,664,665,7,20,0,0,665,666,5,95,0,0,666,667,7,17,0,0,667,668,7, - 20,0,0,668,669,7,19,0,0,669,670,7,11,0,0,670,671,5,95,0,0,671,672,7,0, - 0,0,672,673,7,18,0,0,673,674,7,5,0,0,674,675,7,0,0,0,675,676,7,20,0,0, - 676,677,7,11,0,0,677,678,7,3,0,0,678,679,7,19,0,0,679,680,7,6,0,0,680, - 681,7,7,0,0,681,156,1,0,0,0,682,683,7,19,0,0,683,684,7,6,0,0,684,685, - 7,17,0,0,685,686,7,7,0,0,686,687,7,1,0,0,687,688,7,2,0,0,688,689,7,2, - 0,0,689,158,1,0,0,0,690,691,7,5,0,0,691,692,7,15,0,0,692,693,7,7,0,0, - 693,694,7,5,0,0,694,695,7,6,0,0,695,696,7,17,0,0,696,697,7,19,0,0,697, - 698,7,3,0,0,698,699,7,6,0,0,699,160,1,0,0,0,700,701,7,14,0,0,701,702, - 7,6,0,0,702,703,7,19,0,0,703,704,7,3,0,0,704,705,7,6,0,0,705,162,1,0, - 0,0,706,707,7,1,0,0,707,708,7,2,0,0,708,709,7,2,0,0,709,164,1,0,0,0,710, - 711,7,2,0,0,711,712,7,3,0,0,712,713,7,1,0,0,713,714,7,16,0,0,714,166, - 1,0,0,0,715,716,7,18,0,0,716,717,7,5,0,0,717,718,7,1,0,0,718,719,7,16, - 0,0,719,720,7,5,0,0,720,721,7,8,0,0,721,722,7,17,0,0,722,168,1,0,0,0, - 723,724,7,3,0,0,724,725,7,11,0,0,725,726,7,7,0,0,726,727,7,19,0,0,727, - 728,7,3,0,0,728,729,7,6,0,0,729,730,7,1,0,0,730,731,7,2,0,0,731,170,1, - 0,0,0,732,733,7,4,0,0,733,734,7,1,0,0,734,735,7,7,0,0,735,736,7,0,0,0, - 736,737,7,18,0,0,737,172,1,0,0,0,738,739,7,14,0,0,739,740,7,6,0,0,740, - 741,7,21,0,0,741,742,7,19,0,0,742,743,7,6,0,0,743,744,7,16,0,0,744,174, - 1,0,0,0,745,746,7,0,0,0,746,747,7,8,0,0,747,748,7,5,0,0,748,749,7,1,0, - 0,749,750,7,7,0,0,750,751,7,5,0,0,751,176,1,0,0,0,752,753,7,4,0,0,753, - 754,7,5,0,0,754,755,7,8,0,0,755,756,7,9,0,0,756,757,7,5,0,0,757,178,1, - 0,0,0,758,759,7,3,0,0,759,760,7,6,0,0,760,180,1,0,0,0,761,762,7,17,0, - 0,762,763,7,5,0,0,763,764,7,7,0,0,764,182,1,0,0,0,765,766,7,16,0,0,766, - 767,7,5,0,0,767,768,7,7,0,0,768,769,7,1,0,0,769,770,7,0,0,0,770,771,7, - 18,0,0,771,184,1,0,0,0,772,773,7,16,0,0,773,774,7,5,0,0,774,775,7,2,0, - 0,775,776,7,5,0,0,776,777,7,7,0,0,777,778,7,5,0,0,778,186,1,0,0,0,779, - 780,7,21,0,0,780,781,7,19,0,0,781,782,7,7,0,0,782,783,7,18,0,0,783,188, - 1,0,0,0,784,785,7,8,0,0,785,786,7,5,0,0,786,787,7,7,0,0,787,788,7,14, - 0,0,788,789,7,8,0,0,789,790,7,6,0,0,790,190,1,0,0,0,791,792,7,16,0,0, - 792,793,7,19,0,0,793,794,7,17,0,0,794,795,7,7,0,0,795,796,7,19,0,0,796, - 797,7,6,0,0,797,798,7,0,0,0,798,799,7,7,0,0,799,192,1,0,0,0,800,801,5, - 42,0,0,801,194,1,0,0,0,802,803,7,1,0,0,803,804,7,17,0,0,804,196,1,0,0, - 0,805,806,7,3,0,0,806,807,7,8,0,0,807,808,7,16,0,0,808,809,7,5,0,0,809, - 810,7,8,0,0,810,198,1,0,0,0,811,812,7,10,0,0,812,813,7,12,0,0,813,200, - 1,0,0,0,814,815,7,17,0,0,815,816,7,20,0,0,816,817,7,19,0,0,817,818,7, - 11,0,0,818,202,1,0,0,0,819,820,7,2,0,0,820,821,7,19,0,0,821,822,7,4,0, - 0,822,823,7,19,0,0,823,824,7,7,0,0,824,204,1,0,0,0,825,826,7,1,0,0,826, - 827,7,17,0,0,827,828,7,0,0,0,828,829,7,5,0,0,829,830,7,6,0,0,830,831, - 7,16,0,0,831,832,7,19,0,0,832,833,7,6,0,0,833,834,7,9,0,0,834,206,1,0, - 0,0,835,836,7,1,0,0,836,837,7,17,0,0,837,838,7,0,0,0,838,208,1,0,0,0, - 839,840,7,16,0,0,840,841,7,5,0,0,841,842,7,17,0,0,842,843,7,0,0,0,843, - 844,7,5,0,0,844,845,7,6,0,0,845,846,7,16,0,0,846,847,7,19,0,0,847,848, - 7,6,0,0,848,849,7,9,0,0,849,210,1,0,0,0,850,851,7,16,0,0,851,852,7,5, - 0,0,852,853,7,17,0,0,853,854,7,0,0,0,854,212,1,0,0,0,855,856,7,21,0,0, - 856,857,7,18,0,0,857,858,7,5,0,0,858,859,7,8,0,0,859,860,7,5,0,0,860, - 214,1,0,0,0,861,862,7,17,0,0,862,863,7,18,0,0,863,864,7,3,0,0,864,865, - 7,8,0,0,865,866,7,7,0,0,866,867,7,5,0,0,867,868,7,17,0,0,868,869,7,7, - 0,0,869,216,1,0,0,0,870,871,7,3,0,0,871,872,7,8,0,0,872,218,1,0,0,0,873, - 874,7,15,0,0,874,875,7,3,0,0,875,876,7,8,0,0,876,220,1,0,0,0,877,878, - 7,1,0,0,878,879,7,6,0,0,879,880,7,16,0,0,880,222,1,0,0,0,881,882,7,6, - 0,0,882,883,7,3,0,0,883,884,7,7,0,0,884,224,1,0,0,0,885,886,5,33,0,0, - 886,887,5,61,0,0,887,226,1,0,0,0,888,889,5,45,0,0,889,228,1,0,0,0,890, - 891,5,33,0,0,891,230,1,0,0,0,892,893,5,58,0,0,893,232,1,0,0,0,894,895, - 7,19,0,0,895,896,7,6,0,0,896,234,1,0,0,0,897,898,7,17,0,0,898,899,7,7, - 0,0,899,900,7,1,0,0,900,901,7,8,0,0,901,902,7,7,0,0,902,903,7,17,0,0, - 903,236,1,0,0,0,904,905,7,5,0,0,905,906,7,6,0,0,906,907,7,16,0,0,907, - 908,7,17,0,0,908,238,1,0,0,0,909,910,7,0,0,0,910,911,7,3,0,0,911,912, - 7,6,0,0,912,913,7,7,0,0,913,914,7,1,0,0,914,915,7,19,0,0,915,916,7,6, - 0,0,916,917,7,17,0,0,917,240,1,0,0,0,918,919,7,19,0,0,919,920,7,17,0, - 0,920,242,1,0,0,0,921,922,7,6,0,0,922,923,7,14,0,0,923,924,7,2,0,0,924, - 925,7,2,0,0,925,244,1,0,0,0,926,927,7,7,0,0,927,928,7,8,0,0,928,929,7, - 14,0,0,929,930,7,5,0,0,930,246,1,0,0,0,931,932,7,13,0,0,932,933,7,1,0, - 0,933,934,7,2,0,0,934,935,7,17,0,0,935,936,7,5,0,0,936,248,1,0,0,0,937, - 938,7,0,0,0,938,939,7,3,0,0,939,940,7,14,0,0,940,941,7,6,0,0,941,942, - 7,7,0,0,942,250,1,0,0,0,943,944,7,5,0,0,944,945,7,15,0,0,945,946,7,19, - 0,0,946,947,7,17,0,0,947,948,7,7,0,0,948,949,7,17,0,0,949,252,1,0,0,0, - 950,951,7,0,0,0,951,952,7,1,0,0,952,953,7,17,0,0,953,954,7,5,0,0,954, - 254,1,0,0,0,955,956,7,5,0,0,956,957,7,2,0,0,957,958,7,17,0,0,958,959, - 7,5,0,0,959,256,1,0,0,0,960,961,7,5,0,0,961,962,7,6,0,0,962,963,7,16, - 0,0,963,258,1,0,0,0,964,965,7,21,0,0,965,966,7,18,0,0,966,967,7,5,0,0, - 967,968,7,6,0,0,968,260,1,0,0,0,969,970,7,7,0,0,970,971,7,18,0,0,971, - 972,7,5,0,0,972,973,7,6,0,0,973,262,1,0,0,0,974,979,5,34,0,0,975,978, - 3,327,163,0,976,978,3,265,132,0,977,975,1,0,0,0,977,976,1,0,0,0,978,981, - 1,0,0,0,979,977,1,0,0,0,979,980,1,0,0,0,980,982,1,0,0,0,981,979,1,0,0, - 0,982,993,5,34,0,0,983,988,5,39,0,0,984,987,3,307,153,0,985,987,3,265, - 132,0,986,984,1,0,0,0,986,985,1,0,0,0,987,990,1,0,0,0,988,986,1,0,0,0, - 988,989,1,0,0,0,989,991,1,0,0,0,990,988,1,0,0,0,991,993,5,39,0,0,992, - 974,1,0,0,0,992,983,1,0,0,0,993,264,1,0,0,0,994,1012,5,92,0,0,995,1013, - 7,22,0,0,996,997,7,14,0,0,997,998,3,271,135,0,998,999,3,271,135,0,999, - 1000,3,271,135,0,1000,1001,3,271,135,0,1001,1013,1,0,0,0,1002,1003,7, - 14,0,0,1003,1004,3,271,135,0,1004,1005,3,271,135,0,1005,1006,3,271,135, - 0,1006,1007,3,271,135,0,1007,1008,3,271,135,0,1008,1009,3,271,135,0,1009, - 1010,3,271,135,0,1010,1011,3,271,135,0,1011,1013,1,0,0,0,1012,995,1,0, - 0,0,1012,996,1,0,0,0,1012,1002,1,0,0,0,1013,266,1,0,0,0,1014,1023,3,279, - 139,0,1015,1019,3,275,137,0,1016,1018,3,273,136,0,1017,1016,1,0,0,0,1018, - 1021,1,0,0,0,1019,1017,1,0,0,0,1019,1020,1,0,0,0,1020,1023,1,0,0,0,1021, - 1019,1,0,0,0,1022,1014,1,0,0,0,1022,1015,1,0,0,0,1023,268,1,0,0,0,1024, - 1026,7,23,0,0,1025,1024,1,0,0,0,1026,270,1,0,0,0,1027,1030,3,273,136, - 0,1028,1030,3,269,134,0,1029,1027,1,0,0,0,1029,1028,1,0,0,0,1030,272, - 1,0,0,0,1031,1034,3,279,139,0,1032,1034,3,275,137,0,1033,1031,1,0,0,0, - 1033,1032,1,0,0,0,1034,274,1,0,0,0,1035,1038,3,277,138,0,1036,1038,2, - 56,57,0,1037,1035,1,0,0,0,1037,1036,1,0,0,0,1038,276,1,0,0,0,1039,1040, - 2,49,55,0,1040,278,1,0,0,0,1041,1042,5,48,0,0,1042,280,1,0,0,0,1043,1045, - 3,273,136,0,1044,1043,1,0,0,0,1045,1048,1,0,0,0,1046,1044,1,0,0,0,1046, - 1047,1,0,0,0,1047,1049,1,0,0,0,1048,1046,1,0,0,0,1049,1051,5,46,0,0,1050, - 1052,3,273,136,0,1051,1050,1,0,0,0,1052,1053,1,0,0,0,1053,1051,1,0,0, - 0,1053,1054,1,0,0,0,1054,282,1,0,0,0,1055,1059,3,285,142,0,1056,1058, - 3,287,143,0,1057,1056,1,0,0,0,1058,1061,1,0,0,0,1059,1057,1,0,0,0,1059, - 1060,1,0,0,0,1060,284,1,0,0,0,1061,1059,1,0,0,0,1062,1065,3,335,167,0, - 1063,1065,3,323,161,0,1064,1062,1,0,0,0,1064,1063,1,0,0,0,1065,286,1, - 0,0,0,1066,1069,3,303,151,0,1067,1069,3,319,159,0,1068,1066,1,0,0,0,1068, - 1067,1,0,0,0,1069,288,1,0,0,0,1070,1074,5,96,0,0,1071,1073,3,299,149, - 0,1072,1071,1,0,0,0,1073,1076,1,0,0,0,1074,1072,1,0,0,0,1074,1075,1,0, - 0,0,1075,1077,1,0,0,0,1076,1074,1,0,0,0,1077,1079,5,96,0,0,1078,1070, - 1,0,0,0,1079,1080,1,0,0,0,1080,1078,1,0,0,0,1080,1081,1,0,0,0,1081,290, - 1,0,0,0,1082,1084,3,293,146,0,1083,1082,1,0,0,0,1084,1085,1,0,0,0,1085, - 1083,1,0,0,0,1085,1086,1,0,0,0,1086,292,1,0,0,0,1087,1100,3,321,160,0, - 1088,1100,3,325,162,0,1089,1100,3,329,164,0,1090,1100,3,331,165,0,1091, - 1100,3,297,148,0,1092,1100,3,317,158,0,1093,1100,3,315,157,0,1094,1100, - 3,313,156,0,1095,1100,3,301,150,0,1096,1100,3,333,166,0,1097,1100,7,24, - 0,0,1098,1100,3,295,147,0,1099,1087,1,0,0,0,1099,1088,1,0,0,0,1099,1089, - 1,0,0,0,1099,1090,1,0,0,0,1099,1091,1,0,0,0,1099,1092,1,0,0,0,1099,1093, - 1,0,0,0,1099,1094,1,0,0,0,1099,1095,1,0,0,0,1099,1096,1,0,0,0,1099,1097, - 1,0,0,0,1099,1098,1,0,0,0,1100,294,1,0,0,0,1101,1102,5,47,0,0,1102,1103, - 5,42,0,0,1103,1109,1,0,0,0,1104,1108,3,305,152,0,1105,1106,5,42,0,0,1106, - 1108,3,311,155,0,1107,1104,1,0,0,0,1107,1105,1,0,0,0,1108,1111,1,0,0, - 0,1109,1107,1,0,0,0,1109,1110,1,0,0,0,1110,1112,1,0,0,0,1111,1109,1,0, - 0,0,1112,1113,5,42,0,0,1113,1114,5,47,0,0,1114,296,1,0,0,0,1115,1116, - 7,25,0,0,1116,298,1,0,0,0,1117,1118,8,26,0,0,1118,300,1,0,0,0,1119,1120, - 7,27,0,0,1120,302,1,0,0,0,1121,1122,7,28,0,0,1122,304,1,0,0,0,1123,1124, - 8,29,0,0,1124,306,1,0,0,0,1125,1126,8,30,0,0,1126,308,1,0,0,0,1127,1128, - 8,31,0,0,1128,310,1,0,0,0,1129,1130,8,32,0,0,1130,312,1,0,0,0,1131,1132, - 7,33,0,0,1132,314,1,0,0,0,1133,1134,7,34,0,0,1134,316,1,0,0,0,1135,1136, - 7,35,0,0,1136,318,1,0,0,0,1137,1138,7,36,0,0,1138,320,1,0,0,0,1139,1140, - 7,37,0,0,1140,322,1,0,0,0,1141,1142,7,38,0,0,1142,324,1,0,0,0,1143,1144, - 7,39,0,0,1144,326,1,0,0,0,1145,1146,8,40,0,0,1146,328,1,0,0,0,1147,1148, - 7,41,0,0,1148,330,1,0,0,0,1149,1150,7,42,0,0,1150,332,1,0,0,0,1151,1152, - 7,43,0,0,1152,334,1,0,0,0,1153,1154,7,44,0,0,1154,336,1,0,0,0,1155,1156, - 9,0,0,0,1156,338,1,0,0,0,24,0,977,979,986,988,992,1012,1019,1022,1025, - 1029,1033,1037,1046,1053,1059,1064,1068,1074,1080,1085,1099,1107,1109, - 0 + 297,1,0,0,0,0,339,1,0,0,0,1,341,1,0,0,0,3,343,1,0,0,0,5,345,1,0,0,0,7, + 347,1,0,0,0,9,349,1,0,0,0,11,351,1,0,0,0,13,353,1,0,0,0,15,355,1,0,0, + 0,17,357,1,0,0,0,19,359,1,0,0,0,21,361,1,0,0,0,23,364,1,0,0,0,25,367, + 1,0,0,0,27,369,1,0,0,0,29,372,1,0,0,0,31,374,1,0,0,0,33,377,1,0,0,0,35, + 379,1,0,0,0,37,382,1,0,0,0,39,385,1,0,0,0,41,387,1,0,0,0,43,389,1,0,0, + 0,45,391,1,0,0,0,47,393,1,0,0,0,49,396,1,0,0,0,51,398,1,0,0,0,53,400, + 1,0,0,0,55,402,1,0,0,0,57,404,1,0,0,0,59,406,1,0,0,0,61,408,1,0,0,0,63, + 410,1,0,0,0,65,412,1,0,0,0,67,414,1,0,0,0,69,416,1,0,0,0,71,418,1,0,0, + 0,73,420,1,0,0,0,75,422,1,0,0,0,77,424,1,0,0,0,79,426,1,0,0,0,81,428, + 1,0,0,0,83,430,1,0,0,0,85,432,1,0,0,0,87,434,1,0,0,0,89,436,1,0,0,0,91, + 438,1,0,0,0,93,443,1,0,0,0,95,451,1,0,0,0,97,457,1,0,0,0,99,462,1,0,0, + 0,101,467,1,0,0,0,103,472,1,0,0,0,105,479,1,0,0,0,107,486,1,0,0,0,109, + 493,1,0,0,0,111,502,1,0,0,0,113,507,1,0,0,0,115,513,1,0,0,0,117,519,1, + 0,0,0,119,528,1,0,0,0,121,533,1,0,0,0,123,539,1,0,0,0,125,547,1,0,0,0, + 127,554,1,0,0,0,129,558,1,0,0,0,131,566,1,0,0,0,133,570,1,0,0,0,135,574, + 1,0,0,0,137,577,1,0,0,0,139,585,1,0,0,0,141,593,1,0,0,0,143,599,1,0,0, + 0,145,611,1,0,0,0,147,616,1,0,0,0,149,621,1,0,0,0,151,627,1,0,0,0,153, + 634,1,0,0,0,155,657,1,0,0,0,157,666,1,0,0,0,159,691,1,0,0,0,161,699,1, + 0,0,0,163,709,1,0,0,0,165,715,1,0,0,0,167,719,1,0,0,0,169,724,1,0,0,0, + 171,732,1,0,0,0,173,741,1,0,0,0,175,747,1,0,0,0,177,754,1,0,0,0,179,761, + 1,0,0,0,181,767,1,0,0,0,183,770,1,0,0,0,185,774,1,0,0,0,187,781,1,0,0, + 0,189,788,1,0,0,0,191,793,1,0,0,0,193,800,1,0,0,0,195,809,1,0,0,0,197, + 811,1,0,0,0,199,814,1,0,0,0,201,820,1,0,0,0,203,823,1,0,0,0,205,828,1, + 0,0,0,207,834,1,0,0,0,209,844,1,0,0,0,211,848,1,0,0,0,213,859,1,0,0,0, + 215,864,1,0,0,0,217,870,1,0,0,0,219,879,1,0,0,0,221,882,1,0,0,0,223,886, + 1,0,0,0,225,890,1,0,0,0,227,894,1,0,0,0,229,897,1,0,0,0,231,899,1,0,0, + 0,233,901,1,0,0,0,235,903,1,0,0,0,237,906,1,0,0,0,239,913,1,0,0,0,241, + 918,1,0,0,0,243,927,1,0,0,0,245,930,1,0,0,0,247,935,1,0,0,0,249,940,1, + 0,0,0,251,946,1,0,0,0,253,952,1,0,0,0,255,959,1,0,0,0,257,964,1,0,0,0, + 259,969,1,0,0,0,261,973,1,0,0,0,263,978,1,0,0,0,265,1001,1,0,0,0,267, + 1003,1,0,0,0,269,1031,1,0,0,0,271,1034,1,0,0,0,273,1038,1,0,0,0,275,1042, + 1,0,0,0,277,1046,1,0,0,0,279,1048,1,0,0,0,281,1050,1,0,0,0,283,1055,1, + 0,0,0,285,1064,1,0,0,0,287,1073,1,0,0,0,289,1077,1,0,0,0,291,1087,1,0, + 0,0,293,1092,1,0,0,0,295,1108,1,0,0,0,297,1110,1,0,0,0,299,1124,1,0,0, + 0,301,1126,1,0,0,0,303,1128,1,0,0,0,305,1130,1,0,0,0,307,1132,1,0,0,0, + 309,1134,1,0,0,0,311,1136,1,0,0,0,313,1138,1,0,0,0,315,1140,1,0,0,0,317, + 1142,1,0,0,0,319,1144,1,0,0,0,321,1146,1,0,0,0,323,1148,1,0,0,0,325,1150, + 1,0,0,0,327,1152,1,0,0,0,329,1154,1,0,0,0,331,1156,1,0,0,0,333,1158,1, + 0,0,0,335,1160,1,0,0,0,337,1162,1,0,0,0,339,1164,1,0,0,0,341,342,5,59, + 0,0,342,2,1,0,0,0,343,344,5,40,0,0,344,4,1,0,0,0,345,346,5,41,0,0,346, + 6,1,0,0,0,347,348,5,44,0,0,348,8,1,0,0,0,349,350,5,61,0,0,350,10,1,0, + 0,0,351,352,5,91,0,0,352,12,1,0,0,0,353,354,5,93,0,0,354,14,1,0,0,0,355, + 356,5,123,0,0,356,16,1,0,0,0,357,358,5,125,0,0,358,18,1,0,0,0,359,360, + 5,124,0,0,360,20,1,0,0,0,361,362,5,46,0,0,362,363,5,46,0,0,363,22,1,0, + 0,0,364,365,5,60,0,0,365,366,5,62,0,0,366,24,1,0,0,0,367,368,5,60,0,0, + 368,26,1,0,0,0,369,370,5,60,0,0,370,371,5,61,0,0,371,28,1,0,0,0,372,373, + 5,62,0,0,373,30,1,0,0,0,374,375,5,62,0,0,375,376,5,61,0,0,376,32,1,0, + 0,0,377,378,5,38,0,0,378,34,1,0,0,0,379,380,5,62,0,0,380,381,5,62,0,0, + 381,36,1,0,0,0,382,383,5,60,0,0,383,384,5,60,0,0,384,38,1,0,0,0,385,386, + 5,43,0,0,386,40,1,0,0,0,387,388,5,47,0,0,388,42,1,0,0,0,389,390,5,37, + 0,0,390,44,1,0,0,0,391,392,5,94,0,0,392,46,1,0,0,0,393,394,5,61,0,0,394, + 395,5,126,0,0,395,48,1,0,0,0,396,397,5,46,0,0,397,50,1,0,0,0,398,399, + 5,36,0,0,399,52,1,0,0,0,400,401,5,10216,0,0,401,54,1,0,0,0,402,403,5, + 12296,0,0,403,56,1,0,0,0,404,405,5,65124,0,0,405,58,1,0,0,0,406,407,5, + 65308,0,0,407,60,1,0,0,0,408,409,5,10217,0,0,409,62,1,0,0,0,410,411,5, + 12297,0,0,411,64,1,0,0,0,412,413,5,65125,0,0,413,66,1,0,0,0,414,415,5, + 65310,0,0,415,68,1,0,0,0,416,417,5,173,0,0,417,70,1,0,0,0,418,419,5,8208, + 0,0,419,72,1,0,0,0,420,421,5,8209,0,0,421,74,1,0,0,0,422,423,5,8210,0, + 0,423,76,1,0,0,0,424,425,5,8211,0,0,425,78,1,0,0,0,426,427,5,8212,0,0, + 427,80,1,0,0,0,428,429,5,8213,0,0,429,82,1,0,0,0,430,431,5,8722,0,0,431, + 84,1,0,0,0,432,433,5,65112,0,0,433,86,1,0,0,0,434,435,5,65123,0,0,435, + 88,1,0,0,0,436,437,5,65293,0,0,437,90,1,0,0,0,438,439,7,0,0,0,439,440, + 7,1,0,0,440,441,7,2,0,0,441,442,7,2,0,0,442,92,1,0,0,0,443,444,7,0,0, + 0,444,445,7,3,0,0,445,446,7,4,0,0,446,447,7,4,0,0,447,448,7,5,0,0,448, + 449,7,6,0,0,449,450,7,7,0,0,450,94,1,0,0,0,451,452,7,4,0,0,452,453,7, + 1,0,0,453,454,7,0,0,0,454,455,7,8,0,0,455,456,7,3,0,0,456,96,1,0,0,0, + 457,458,7,9,0,0,458,459,7,2,0,0,459,460,7,3,0,0,460,461,7,10,0,0,461, + 98,1,0,0,0,462,463,7,0,0,0,463,464,7,3,0,0,464,465,7,11,0,0,465,466,7, + 12,0,0,466,100,1,0,0,0,467,468,7,13,0,0,468,469,7,8,0,0,469,470,7,3,0, + 0,470,471,7,4,0,0,471,102,1,0,0,0,472,473,7,0,0,0,473,474,7,3,0,0,474, + 475,7,2,0,0,475,476,7,14,0,0,476,477,7,4,0,0,477,478,7,6,0,0,478,104, + 1,0,0,0,479,480,7,5,0,0,480,481,7,15,0,0,481,482,7,11,0,0,482,483,7,3, + 0,0,483,484,7,8,0,0,484,485,7,7,0,0,485,106,1,0,0,0,486,487,7,16,0,0, + 487,488,7,4,0,0,488,489,7,11,0,0,489,490,7,3,0,0,490,491,7,8,0,0,491, + 492,7,7,0,0,492,108,1,0,0,0,493,494,7,17,0,0,494,495,7,1,0,0,495,496, + 7,7,0,0,496,497,7,1,0,0,497,498,7,10,0,0,498,499,7,1,0,0,499,500,7,18, + 0,0,500,501,7,5,0,0,501,110,1,0,0,0,502,503,7,6,0,0,503,504,7,3,0,0,504, + 505,7,17,0,0,505,506,7,5,0,0,506,112,1,0,0,0,507,508,7,7,0,0,508,509, + 7,1,0,0,509,510,7,10,0,0,510,511,7,2,0,0,511,512,7,5,0,0,512,114,1,0, + 0,0,513,514,7,9,0,0,514,515,7,8,0,0,515,516,7,3,0,0,516,517,7,14,0,0, + 517,518,7,11,0,0,518,116,1,0,0,0,519,520,7,8,0,0,520,521,7,17,0,0,521, + 522,7,13,0,0,522,523,7,9,0,0,523,524,7,8,0,0,524,525,7,1,0,0,525,526, + 7,11,0,0,526,527,7,19,0,0,527,118,1,0,0,0,528,529,7,17,0,0,529,530,7, + 8,0,0,530,531,7,3,0,0,531,532,7,11,0,0,532,120,1,0,0,0,533,534,7,1,0, + 0,534,535,7,2,0,0,535,536,7,7,0,0,536,537,7,5,0,0,537,538,7,8,0,0,538, + 122,1,0,0,0,539,540,7,17,0,0,540,541,7,5,0,0,541,542,7,13,0,0,542,543, + 7,1,0,0,543,544,7,14,0,0,544,545,7,2,0,0,545,546,7,7,0,0,546,124,1,0, + 0,0,547,548,7,8,0,0,548,549,7,5,0,0,549,550,7,6,0,0,550,551,7,1,0,0,551, + 552,7,4,0,0,552,553,7,5,0,0,553,126,1,0,0,0,554,555,7,1,0,0,555,556,7, + 17,0,0,556,557,7,17,0,0,557,128,1,0,0,0,558,559,7,11,0,0,559,560,7,8, + 0,0,560,561,7,16,0,0,561,562,7,4,0,0,562,563,7,1,0,0,563,564,7,8,0,0, + 564,565,7,12,0,0,565,130,1,0,0,0,566,567,7,20,0,0,567,568,7,5,0,0,568, + 569,7,12,0,0,569,132,1,0,0,0,570,571,7,8,0,0,571,572,7,5,0,0,572,573, + 7,2,0,0,573,134,1,0,0,0,574,575,7,7,0,0,575,576,7,3,0,0,576,136,1,0,0, + 0,577,578,7,5,0,0,578,579,7,15,0,0,579,580,7,11,0,0,580,581,7,2,0,0,581, + 582,7,1,0,0,582,583,7,16,0,0,583,584,7,6,0,0,584,138,1,0,0,0,585,586, + 7,11,0,0,586,587,7,8,0,0,587,588,7,3,0,0,588,589,7,13,0,0,589,590,7,16, + 0,0,590,591,7,2,0,0,591,592,7,5,0,0,592,140,1,0,0,0,593,594,7,10,0,0, + 594,595,7,5,0,0,595,596,7,9,0,0,596,597,7,16,0,0,597,598,7,6,0,0,598, + 142,1,0,0,0,599,600,7,7,0,0,600,601,7,8,0,0,601,602,7,1,0,0,602,603,7, + 6,0,0,603,604,7,18,0,0,604,605,7,1,0,0,605,606,7,0,0,0,606,607,7,7,0, + 0,607,608,7,16,0,0,608,609,7,3,0,0,609,610,7,6,0,0,610,144,1,0,0,0,611, + 612,7,8,0,0,612,613,7,5,0,0,613,614,7,1,0,0,614,615,7,17,0,0,615,146, + 1,0,0,0,616,617,7,3,0,0,617,618,7,6,0,0,618,619,7,2,0,0,619,620,7,12, + 0,0,620,148,1,0,0,0,621,622,7,21,0,0,622,623,7,8,0,0,623,624,7,16,0,0, + 624,625,7,7,0,0,625,626,7,5,0,0,626,150,1,0,0,0,627,628,7,0,0,0,628,629, + 7,3,0,0,629,630,7,4,0,0,630,631,7,4,0,0,631,632,7,16,0,0,632,633,7,7, + 0,0,633,152,1,0,0,0,634,635,7,0,0,0,635,636,7,3,0,0,636,637,7,4,0,0,637, + 638,7,4,0,0,638,639,7,16,0,0,639,640,7,7,0,0,640,641,5,95,0,0,641,642, + 7,18,0,0,642,643,7,20,0,0,643,644,7,16,0,0,644,645,7,11,0,0,645,646,5, + 95,0,0,646,647,7,0,0,0,647,648,7,19,0,0,648,649,7,5,0,0,649,650,7,0,0, + 0,650,651,7,20,0,0,651,652,7,11,0,0,652,653,7,3,0,0,653,654,7,16,0,0, + 654,655,7,6,0,0,655,656,7,7,0,0,656,154,1,0,0,0,657,658,7,8,0,0,658,659, + 7,3,0,0,659,660,7,2,0,0,660,661,7,2,0,0,661,662,7,10,0,0,662,663,7,1, + 0,0,663,664,7,0,0,0,664,665,7,20,0,0,665,156,1,0,0,0,666,667,7,8,0,0, + 667,668,7,3,0,0,668,669,7,2,0,0,669,670,7,2,0,0,670,671,7,10,0,0,671, + 672,7,1,0,0,672,673,7,0,0,0,673,674,7,20,0,0,674,675,5,95,0,0,675,676, + 7,18,0,0,676,677,7,20,0,0,677,678,7,16,0,0,678,679,7,11,0,0,679,680,5, + 95,0,0,680,681,7,0,0,0,681,682,7,19,0,0,682,683,7,5,0,0,683,684,7,0,0, + 0,684,685,7,20,0,0,685,686,7,11,0,0,686,687,7,3,0,0,687,688,7,16,0,0, + 688,689,7,6,0,0,689,690,7,7,0,0,690,158,1,0,0,0,691,692,7,16,0,0,692, + 693,7,6,0,0,693,694,7,18,0,0,694,695,7,7,0,0,695,696,7,1,0,0,696,697, + 7,2,0,0,697,698,7,2,0,0,698,160,1,0,0,0,699,700,7,5,0,0,700,701,7,15, + 0,0,701,702,7,7,0,0,702,703,7,5,0,0,703,704,7,6,0,0,704,705,7,18,0,0, + 705,706,7,16,0,0,706,707,7,3,0,0,707,708,7,6,0,0,708,162,1,0,0,0,709, + 710,7,14,0,0,710,711,7,6,0,0,711,712,7,16,0,0,712,713,7,3,0,0,713,714, + 7,6,0,0,714,164,1,0,0,0,715,716,7,1,0,0,716,717,7,2,0,0,717,718,7,2,0, + 0,718,166,1,0,0,0,719,720,7,2,0,0,720,721,7,3,0,0,721,722,7,1,0,0,722, + 723,7,17,0,0,723,168,1,0,0,0,724,725,7,19,0,0,725,726,7,5,0,0,726,727, + 7,1,0,0,727,728,7,17,0,0,728,729,7,5,0,0,729,730,7,8,0,0,730,731,7,18, + 0,0,731,170,1,0,0,0,732,733,7,3,0,0,733,734,7,11,0,0,734,735,7,7,0,0, + 735,736,7,16,0,0,736,737,7,3,0,0,737,738,7,6,0,0,738,739,7,1,0,0,739, + 740,7,2,0,0,740,172,1,0,0,0,741,742,7,4,0,0,742,743,7,1,0,0,743,744,7, + 7,0,0,744,745,7,0,0,0,745,746,7,19,0,0,746,174,1,0,0,0,747,748,7,14,0, + 0,748,749,7,6,0,0,749,750,7,21,0,0,750,751,7,16,0,0,751,752,7,6,0,0,752, + 753,7,17,0,0,753,176,1,0,0,0,754,755,7,0,0,0,755,756,7,8,0,0,756,757, + 7,5,0,0,757,758,7,1,0,0,758,759,7,7,0,0,759,760,7,5,0,0,760,178,1,0,0, + 0,761,762,7,4,0,0,762,763,7,5,0,0,763,764,7,8,0,0,764,765,7,9,0,0,765, + 766,7,5,0,0,766,180,1,0,0,0,767,768,7,3,0,0,768,769,7,6,0,0,769,182,1, + 0,0,0,770,771,7,18,0,0,771,772,7,5,0,0,772,773,7,7,0,0,773,184,1,0,0, + 0,774,775,7,17,0,0,775,776,7,5,0,0,776,777,7,7,0,0,777,778,7,1,0,0,778, + 779,7,0,0,0,779,780,7,19,0,0,780,186,1,0,0,0,781,782,7,17,0,0,782,783, + 7,5,0,0,783,784,7,2,0,0,784,785,7,5,0,0,785,786,7,7,0,0,786,787,7,5,0, + 0,787,188,1,0,0,0,788,789,7,21,0,0,789,790,7,16,0,0,790,791,7,7,0,0,791, + 792,7,19,0,0,792,190,1,0,0,0,793,794,7,8,0,0,794,795,7,5,0,0,795,796, + 7,7,0,0,796,797,7,14,0,0,797,798,7,8,0,0,798,799,7,6,0,0,799,192,1,0, + 0,0,800,801,7,17,0,0,801,802,7,16,0,0,802,803,7,18,0,0,803,804,7,7,0, + 0,804,805,7,16,0,0,805,806,7,6,0,0,806,807,7,0,0,0,807,808,7,7,0,0,808, + 194,1,0,0,0,809,810,5,42,0,0,810,196,1,0,0,0,811,812,7,1,0,0,812,813, + 7,18,0,0,813,198,1,0,0,0,814,815,7,3,0,0,815,816,7,8,0,0,816,817,7,17, + 0,0,817,818,7,5,0,0,818,819,7,8,0,0,819,200,1,0,0,0,820,821,7,10,0,0, + 821,822,7,12,0,0,822,202,1,0,0,0,823,824,7,18,0,0,824,825,7,20,0,0,825, + 826,7,16,0,0,826,827,7,11,0,0,827,204,1,0,0,0,828,829,7,2,0,0,829,830, + 7,16,0,0,830,831,7,4,0,0,831,832,7,16,0,0,832,833,7,7,0,0,833,206,1,0, + 0,0,834,835,7,1,0,0,835,836,7,18,0,0,836,837,7,0,0,0,837,838,7,5,0,0, + 838,839,7,6,0,0,839,840,7,17,0,0,840,841,7,16,0,0,841,842,7,6,0,0,842, + 843,7,9,0,0,843,208,1,0,0,0,844,845,7,1,0,0,845,846,7,18,0,0,846,847, + 7,0,0,0,847,210,1,0,0,0,848,849,7,17,0,0,849,850,7,5,0,0,850,851,7,18, + 0,0,851,852,7,0,0,0,852,853,7,5,0,0,853,854,7,6,0,0,854,855,7,17,0,0, + 855,856,7,16,0,0,856,857,7,6,0,0,857,858,7,9,0,0,858,212,1,0,0,0,859, + 860,7,17,0,0,860,861,7,5,0,0,861,862,7,18,0,0,862,863,7,0,0,0,863,214, + 1,0,0,0,864,865,7,21,0,0,865,866,7,19,0,0,866,867,7,5,0,0,867,868,7,8, + 0,0,868,869,7,5,0,0,869,216,1,0,0,0,870,871,7,18,0,0,871,872,7,19,0,0, + 872,873,7,3,0,0,873,874,7,8,0,0,874,875,7,7,0,0,875,876,7,5,0,0,876,877, + 7,18,0,0,877,878,7,7,0,0,878,218,1,0,0,0,879,880,7,3,0,0,880,881,7,8, + 0,0,881,220,1,0,0,0,882,883,7,15,0,0,883,884,7,3,0,0,884,885,7,8,0,0, + 885,222,1,0,0,0,886,887,7,1,0,0,887,888,7,6,0,0,888,889,7,17,0,0,889, + 224,1,0,0,0,890,891,7,6,0,0,891,892,7,3,0,0,892,893,7,7,0,0,893,226,1, + 0,0,0,894,895,5,33,0,0,895,896,5,61,0,0,896,228,1,0,0,0,897,898,5,45, + 0,0,898,230,1,0,0,0,899,900,5,33,0,0,900,232,1,0,0,0,901,902,5,58,0,0, + 902,234,1,0,0,0,903,904,7,16,0,0,904,905,7,6,0,0,905,236,1,0,0,0,906, + 907,7,18,0,0,907,908,7,7,0,0,908,909,7,1,0,0,909,910,7,8,0,0,910,911, + 7,7,0,0,911,912,7,18,0,0,912,238,1,0,0,0,913,914,7,5,0,0,914,915,7,6, + 0,0,915,916,7,17,0,0,916,917,7,18,0,0,917,240,1,0,0,0,918,919,7,0,0,0, + 919,920,7,3,0,0,920,921,7,6,0,0,921,922,7,7,0,0,922,923,7,1,0,0,923,924, + 7,16,0,0,924,925,7,6,0,0,925,926,7,18,0,0,926,242,1,0,0,0,927,928,7,16, + 0,0,928,929,7,18,0,0,929,244,1,0,0,0,930,931,7,6,0,0,931,932,7,14,0,0, + 932,933,7,2,0,0,933,934,7,2,0,0,934,246,1,0,0,0,935,936,7,7,0,0,936,937, + 7,8,0,0,937,938,7,14,0,0,938,939,7,5,0,0,939,248,1,0,0,0,940,941,7,13, + 0,0,941,942,7,1,0,0,942,943,7,2,0,0,943,944,7,18,0,0,944,945,7,5,0,0, + 945,250,1,0,0,0,946,947,7,0,0,0,947,948,7,3,0,0,948,949,7,14,0,0,949, + 950,7,6,0,0,950,951,7,7,0,0,951,252,1,0,0,0,952,953,7,5,0,0,953,954,7, + 15,0,0,954,955,7,16,0,0,955,956,7,18,0,0,956,957,7,7,0,0,957,958,7,18, + 0,0,958,254,1,0,0,0,959,960,7,0,0,0,960,961,7,1,0,0,961,962,7,18,0,0, + 962,963,7,5,0,0,963,256,1,0,0,0,964,965,7,5,0,0,965,966,7,2,0,0,966,967, + 7,18,0,0,967,968,7,5,0,0,968,258,1,0,0,0,969,970,7,5,0,0,970,971,7,6, + 0,0,971,972,7,17,0,0,972,260,1,0,0,0,973,974,7,21,0,0,974,975,7,19,0, + 0,975,976,7,5,0,0,976,977,7,6,0,0,977,262,1,0,0,0,978,979,7,7,0,0,979, + 980,7,19,0,0,980,981,7,5,0,0,981,982,7,6,0,0,982,264,1,0,0,0,983,988, + 5,34,0,0,984,987,3,329,164,0,985,987,3,267,133,0,986,984,1,0,0,0,986, + 985,1,0,0,0,987,990,1,0,0,0,988,986,1,0,0,0,988,989,1,0,0,0,989,991,1, + 0,0,0,990,988,1,0,0,0,991,1002,5,34,0,0,992,997,5,39,0,0,993,996,3,309, + 154,0,994,996,3,267,133,0,995,993,1,0,0,0,995,994,1,0,0,0,996,999,1,0, + 0,0,997,995,1,0,0,0,997,998,1,0,0,0,998,1000,1,0,0,0,999,997,1,0,0,0, + 1000,1002,5,39,0,0,1001,983,1,0,0,0,1001,992,1,0,0,0,1002,266,1,0,0,0, + 1003,1021,5,92,0,0,1004,1022,7,22,0,0,1005,1006,7,14,0,0,1006,1007,3, + 273,136,0,1007,1008,3,273,136,0,1008,1009,3,273,136,0,1009,1010,3,273, + 136,0,1010,1022,1,0,0,0,1011,1012,7,14,0,0,1012,1013,3,273,136,0,1013, + 1014,3,273,136,0,1014,1015,3,273,136,0,1015,1016,3,273,136,0,1016,1017, + 3,273,136,0,1017,1018,3,273,136,0,1018,1019,3,273,136,0,1019,1020,3,273, + 136,0,1020,1022,1,0,0,0,1021,1004,1,0,0,0,1021,1005,1,0,0,0,1021,1011, + 1,0,0,0,1022,268,1,0,0,0,1023,1032,3,281,140,0,1024,1028,3,277,138,0, + 1025,1027,3,275,137,0,1026,1025,1,0,0,0,1027,1030,1,0,0,0,1028,1026,1, + 0,0,0,1028,1029,1,0,0,0,1029,1032,1,0,0,0,1030,1028,1,0,0,0,1031,1023, + 1,0,0,0,1031,1024,1,0,0,0,1032,270,1,0,0,0,1033,1035,7,23,0,0,1034,1033, + 1,0,0,0,1035,272,1,0,0,0,1036,1039,3,275,137,0,1037,1039,3,271,135,0, + 1038,1036,1,0,0,0,1038,1037,1,0,0,0,1039,274,1,0,0,0,1040,1043,3,281, + 140,0,1041,1043,3,277,138,0,1042,1040,1,0,0,0,1042,1041,1,0,0,0,1043, + 276,1,0,0,0,1044,1047,3,279,139,0,1045,1047,2,56,57,0,1046,1044,1,0,0, + 0,1046,1045,1,0,0,0,1047,278,1,0,0,0,1048,1049,2,49,55,0,1049,280,1,0, + 0,0,1050,1051,5,48,0,0,1051,282,1,0,0,0,1052,1054,3,275,137,0,1053,1052, + 1,0,0,0,1054,1057,1,0,0,0,1055,1053,1,0,0,0,1055,1056,1,0,0,0,1056,1058, + 1,0,0,0,1057,1055,1,0,0,0,1058,1060,5,46,0,0,1059,1061,3,275,137,0,1060, + 1059,1,0,0,0,1061,1062,1,0,0,0,1062,1060,1,0,0,0,1062,1063,1,0,0,0,1063, + 284,1,0,0,0,1064,1068,3,287,143,0,1065,1067,3,289,144,0,1066,1065,1,0, + 0,0,1067,1070,1,0,0,0,1068,1066,1,0,0,0,1068,1069,1,0,0,0,1069,286,1, + 0,0,0,1070,1068,1,0,0,0,1071,1074,3,337,168,0,1072,1074,3,325,162,0,1073, + 1071,1,0,0,0,1073,1072,1,0,0,0,1074,288,1,0,0,0,1075,1078,3,305,152,0, + 1076,1078,3,321,160,0,1077,1075,1,0,0,0,1077,1076,1,0,0,0,1078,290,1, + 0,0,0,1079,1083,5,96,0,0,1080,1082,3,301,150,0,1081,1080,1,0,0,0,1082, + 1085,1,0,0,0,1083,1081,1,0,0,0,1083,1084,1,0,0,0,1084,1086,1,0,0,0,1085, + 1083,1,0,0,0,1086,1088,5,96,0,0,1087,1079,1,0,0,0,1088,1089,1,0,0,0,1089, + 1087,1,0,0,0,1089,1090,1,0,0,0,1090,292,1,0,0,0,1091,1093,3,295,147,0, + 1092,1091,1,0,0,0,1093,1094,1,0,0,0,1094,1092,1,0,0,0,1094,1095,1,0,0, + 0,1095,294,1,0,0,0,1096,1109,3,323,161,0,1097,1109,3,327,163,0,1098,1109, + 3,331,165,0,1099,1109,3,333,166,0,1100,1109,3,299,149,0,1101,1109,3,319, + 159,0,1102,1109,3,317,158,0,1103,1109,3,315,157,0,1104,1109,3,303,151, + 0,1105,1109,3,335,167,0,1106,1109,7,24,0,0,1107,1109,3,297,148,0,1108, + 1096,1,0,0,0,1108,1097,1,0,0,0,1108,1098,1,0,0,0,1108,1099,1,0,0,0,1108, + 1100,1,0,0,0,1108,1101,1,0,0,0,1108,1102,1,0,0,0,1108,1103,1,0,0,0,1108, + 1104,1,0,0,0,1108,1105,1,0,0,0,1108,1106,1,0,0,0,1108,1107,1,0,0,0,1109, + 296,1,0,0,0,1110,1111,5,47,0,0,1111,1112,5,42,0,0,1112,1118,1,0,0,0,1113, + 1117,3,307,153,0,1114,1115,5,42,0,0,1115,1117,3,313,156,0,1116,1113,1, + 0,0,0,1116,1114,1,0,0,0,1117,1120,1,0,0,0,1118,1116,1,0,0,0,1118,1119, + 1,0,0,0,1119,1121,1,0,0,0,1120,1118,1,0,0,0,1121,1122,5,42,0,0,1122,1123, + 5,47,0,0,1123,298,1,0,0,0,1124,1125,7,25,0,0,1125,300,1,0,0,0,1126,1127, + 8,26,0,0,1127,302,1,0,0,0,1128,1129,7,27,0,0,1129,304,1,0,0,0,1130,1131, + 7,28,0,0,1131,306,1,0,0,0,1132,1133,8,29,0,0,1133,308,1,0,0,0,1134,1135, + 8,30,0,0,1135,310,1,0,0,0,1136,1137,8,31,0,0,1137,312,1,0,0,0,1138,1139, + 8,32,0,0,1139,314,1,0,0,0,1140,1141,7,33,0,0,1141,316,1,0,0,0,1142,1143, + 7,34,0,0,1143,318,1,0,0,0,1144,1145,7,35,0,0,1145,320,1,0,0,0,1146,1147, + 7,36,0,0,1147,322,1,0,0,0,1148,1149,7,37,0,0,1149,324,1,0,0,0,1150,1151, + 7,38,0,0,1151,326,1,0,0,0,1152,1153,7,39,0,0,1153,328,1,0,0,0,1154,1155, + 8,40,0,0,1155,330,1,0,0,0,1156,1157,7,41,0,0,1157,332,1,0,0,0,1158,1159, + 7,42,0,0,1159,334,1,0,0,0,1160,1161,7,43,0,0,1161,336,1,0,0,0,1162,1163, + 7,44,0,0,1163,338,1,0,0,0,1164,1165,9,0,0,0,1165,340,1,0,0,0,24,0,986, + 988,995,997,1001,1021,1028,1031,1034,1038,1042,1046,1055,1062,1068,1073, + 1077,1083,1089,1094,1108,1116,1118,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); diff --git a/third_party/antlr4_cypher/cypher_parser.cpp b/third_party/antlr4_cypher/cypher_parser.cpp index 9437de55da..da4f0be3d7 100644 --- a/third_party/antlr4_cypher/cypher_parser.cpp +++ b/third_party/antlr4_cypher/cypher_parser.cpp @@ -52,10 +52,10 @@ void cypherParserInitialize() { auto staticData = std::make_unique( std::vector{ "ku_Statements", "oC_Cypher", "oC_Statement", "kU_CopyFrom", "kU_ColumnNames", - "kU_CopyFromByColumn", "kU_CopyTO", "kU_ExportDatabase", "kU_StandaloneCall", - "kU_CommentOn", "kU_CreateMacro", "kU_PositionalArgs", "kU_DefaultArg", - "kU_FilePaths", "kU_ParsingOptions", "kU_ParsingOption", "kU_DDL", - "kU_CreateNodeTable", "kU_CreateRelTable", "kU_CreateRelTableGroup", + "kU_CopyFromByColumn", "kU_CopyTO", "kU_ExportDatabase", "kU_ImportDatabase", + "kU_StandaloneCall", "kU_CommentOn", "kU_CreateMacro", "kU_PositionalArgs", + "kU_DefaultArg", "kU_FilePaths", "kU_ParsingOptions", "kU_ParsingOption", + "kU_DDL", "kU_CreateNodeTable", "kU_CreateRelTable", "kU_CreateRelTableGroup", "kU_RelTableConnection", "kU_CreateRdfGraph", "kU_DropTable", "kU_AlterTable", "kU_AlterOptions", "kU_AddProperty", "kU_DropProperty", "kU_RenameTable", "kU_RenameProperty", "kU_PropertyDefinitions", "kU_PropertyDefinition", @@ -102,18 +102,18 @@ void cypherParserInitialize() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "'*'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'0'" + "", "'*'", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'0'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "CALL", "COMMENT", - "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", "DATABASE", "NODE", - "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", "DEFAULT", "RENAME", - "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", "PROFILE", "BEGIN", - "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", + "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", "IMPORT", "DATABASE", + "NODE", "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", "DEFAULT", + "RENAME", "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", "PROFILE", + "BEGIN", "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", "ALL", "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", "MERGE", "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", @@ -129,7 +129,7 @@ void cypherParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,149,2301,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6, + 4,1,150,2310,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6, 2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, @@ -150,186 +150,187 @@ void cypherParserInitialize() { 7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128, 7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134, 7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140, - 7,140,2,141,7,141,2,142,7,142,2,143,7,143,1,0,1,0,3,0,291,8,0,1,0,1,0, - 3,0,295,8,0,1,0,5,0,298,8,0,10,0,12,0,301,9,0,1,0,3,0,304,8,0,1,0,1,0, - 1,1,3,1,309,8,1,1,1,3,1,312,8,1,1,1,1,1,3,1,316,8,1,1,1,3,1,319,8,1,1, - 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,332,8,2,1,3,1,3,1,3,1,3, - 3,3,338,8,3,1,3,1,3,3,3,342,8,3,1,3,1,3,3,3,346,8,3,1,3,1,3,3,3,350,8, - 3,1,3,3,3,353,8,3,1,3,1,3,1,3,1,3,3,3,359,8,3,1,3,3,3,362,8,3,1,3,1,3, - 3,3,366,8,3,1,3,1,3,3,3,370,8,3,1,3,1,3,3,3,374,8,3,1,4,1,4,3,4,378,8, - 4,1,4,1,4,3,4,382,8,4,1,4,5,4,385,8,4,10,4,12,4,388,9,4,1,5,1,5,1,5,1, - 5,1,5,1,5,1,5,1,5,3,5,398,8,5,1,5,1,5,3,5,402,8,5,1,5,1,5,3,5,406,8,5, - 1,5,5,5,409,8,5,10,5,12,5,412,9,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6, - 1,6,3,6,424,8,6,1,6,1,6,3,6,428,8,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,436,8, - 6,1,6,1,6,3,6,440,8,6,1,6,1,6,3,6,444,8,6,1,6,1,6,3,6,448,8,6,1,7,1,7, - 1,7,1,7,1,7,1,7,3,7,456,8,7,1,7,1,7,3,7,460,8,7,1,7,1,7,3,7,464,8,7,1, - 7,1,7,3,7,468,8,7,1,8,1,8,1,8,1,8,3,8,474,8,8,1,8,1,8,3,8,478,8,8,1,8, - 1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1, - 10,1,10,1,10,3,10,500,8,10,1,10,1,10,3,10,504,8,10,1,10,3,10,507,8,10, - 1,10,3,10,510,8,10,1,10,3,10,513,8,10,1,10,3,10,516,8,10,1,10,1,10,3, - 10,520,8,10,1,10,5,10,523,8,10,10,10,12,10,526,9,10,1,10,3,10,529,8,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,3,11,539,8,11,1,11,1,11,3,11, - 543,8,11,1,11,5,11,546,8,11,10,11,12,11,549,9,11,1,12,1,12,3,12,553,8, - 12,1,12,1,12,1,12,3,12,558,8,12,1,12,1,12,1,13,1,13,3,13,564,8,13,1,13, - 1,13,3,13,568,8,13,1,13,1,13,3,13,572,8,13,1,13,5,13,575,8,13,10,13,12, - 13,578,9,13,1,13,1,13,1,13,1,13,3,13,584,8,13,1,13,1,13,3,13,588,8,13, - 1,13,1,13,3,13,592,8,13,1,13,3,13,595,8,13,1,14,1,14,3,14,599,8,14,1, - 14,1,14,3,14,603,8,14,1,14,5,14,606,8,14,10,14,12,14,609,9,14,1,15,1, - 15,3,15,613,8,15,1,15,1,15,3,15,617,8,15,1,15,1,15,1,16,1,16,1,16,1,16, - 1,16,1,16,3,16,627,8,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17, - 637,8,17,1,17,1,17,3,17,641,8,17,1,17,1,17,3,17,645,8,17,1,17,1,17,3, - 17,649,8,17,1,17,1,17,1,17,3,17,654,8,17,1,17,1,17,1,18,1,18,1,18,1,18, - 1,18,1,18,1,18,1,18,3,18,666,8,18,1,18,1,18,3,18,670,8,18,1,18,1,18,3, - 18,674,8,18,1,18,1,18,3,18,678,8,18,1,18,1,18,3,18,682,8,18,3,18,684, - 8,18,1,18,1,18,3,18,688,8,18,1,18,1,18,3,18,692,8,18,3,18,694,8,18,1, - 18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,708,8, - 19,1,19,1,19,3,19,712,8,19,1,19,1,19,3,19,716,8,19,1,19,1,19,3,19,720, - 8,19,1,19,4,19,723,8,19,11,19,12,19,724,1,19,3,19,728,8,19,1,19,1,19, - 3,19,732,8,19,1,19,1,19,3,19,736,8,19,3,19,738,8,19,1,19,1,19,3,19,742, - 8,19,1,19,1,19,3,19,746,8,19,3,19,748,8,19,1,19,1,19,1,20,1,20,1,20,1, - 20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1, - 22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1, - 24,3,24,784,8,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,795, - 8,25,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,1,29,1,29,3,29,817,8,29,1,29,1,29,3,29,821,8, - 29,1,29,5,29,824,8,29,10,29,12,29,827,9,29,1,30,1,30,1,30,1,30,1,31,1, - 31,1,31,1,31,3,31,837,8,31,1,31,1,31,3,31,841,8,31,1,31,1,31,3,31,845, - 8,31,1,31,1,31,1,32,1,32,1,32,1,32,3,32,853,8,32,1,32,1,32,3,32,857,8, - 32,1,32,1,32,3,32,861,8,32,1,32,1,32,1,32,1,32,3,32,867,8,32,1,32,1,32, - 3,32,871,8,32,1,32,1,32,3,32,875,8,32,1,32,1,32,1,32,1,32,3,32,881,8, - 32,1,32,1,32,3,32,885,8,32,1,32,1,32,3,32,889,8,32,1,32,1,32,3,32,893, - 8,32,1,32,1,32,3,32,897,8,32,1,32,1,32,3,32,901,8,32,1,32,1,32,5,32,905, - 8,32,10,32,12,32,908,9,32,1,33,1,33,5,33,912,8,33,10,33,12,33,915,9,33, - 1,34,1,34,3,34,919,8,34,1,34,1,34,1,35,1,35,3,35,925,8,35,1,36,1,36,1, - 37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, - 38,1,38,3,38,945,8,38,1,39,1,39,3,39,949,8,39,1,40,1,40,1,40,1,40,1,40, - 1,40,3,40,957,8,40,1,41,1,41,1,41,1,41,1,42,1,42,1,43,1,43,3,43,967,8, - 43,1,43,5,43,970,8,43,10,43,12,43,973,9,43,1,43,1,43,3,43,977,8,43,4, - 43,979,8,43,11,43,12,43,980,1,43,1,43,1,43,3,43,986,8,43,1,44,1,44,1, - 44,1,44,3,44,992,8,44,1,44,1,44,1,44,3,44,997,8,44,1,44,3,44,1000,8,44, - 1,45,1,45,3,45,1004,8,45,1,46,1,46,3,46,1008,8,46,5,46,1010,8,46,10,46, - 12,46,1013,9,46,1,46,1,46,1,46,3,46,1018,8,46,5,46,1020,8,46,10,46,12, - 46,1023,9,46,1,46,1,46,3,46,1027,8,46,1,46,5,46,1030,8,46,10,46,12,46, - 1033,9,46,1,46,3,46,1036,8,46,1,46,3,46,1039,8,46,1,46,1,46,3,46,1043, - 8,46,4,46,1045,8,46,11,46,12,46,1046,1,46,1,46,3,46,1051,8,46,1,47,1, - 47,3,47,1055,8,47,4,47,1057,8,47,11,47,12,47,1058,1,47,1,47,1,48,1,48, - 3,48,1065,8,48,5,48,1067,8,48,10,48,12,48,1070,9,48,1,48,1,48,3,48,1074, - 8,48,5,48,1076,8,48,10,48,12,48,1079,9,48,1,48,1,48,1,49,1,49,1,49,1, - 49,3,49,1087,8,49,1,50,1,50,1,50,1,50,3,50,1093,8,50,1,51,1,51,1,51,1, - 51,1,51,1,51,3,51,1101,8,51,1,51,1,51,3,51,1105,8,51,1,51,1,51,3,51,1109, - 8,51,1,51,1,51,3,51,1113,8,51,1,51,1,51,1,51,1,51,1,51,3,51,1120,8,51, - 1,51,1,51,3,51,1124,8,51,1,51,1,51,3,51,1128,8,51,1,51,1,51,3,51,1132, - 8,51,1,51,3,51,1135,8,51,1,51,3,51,1138,8,51,1,51,3,51,1141,8,51,1,52, - 1,52,1,52,1,52,3,52,1147,8,52,1,52,3,52,1150,8,52,1,53,1,53,3,53,1154, - 8,53,1,53,1,53,3,53,1158,8,53,1,53,1,53,3,53,1162,8,53,1,53,3,53,1165, - 8,53,1,54,1,54,3,54,1169,8,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55, - 3,55,1179,8,55,1,55,1,55,1,56,1,56,3,56,1185,8,56,1,56,1,56,1,56,5,56, - 1190,8,56,10,56,12,56,1193,9,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1, - 57,1,57,1,57,3,57,1205,8,57,1,58,1,58,3,58,1209,8,58,1,58,1,58,3,58,1213, - 8,58,1,58,1,58,3,58,1217,8,58,1,58,5,58,1220,8,58,10,58,12,58,1223,9, - 58,1,59,1,59,3,59,1227,8,59,1,59,1,59,3,59,1231,8,59,1,59,1,59,1,60,1, - 60,3,60,1237,8,60,1,60,1,60,3,60,1241,8,60,1,60,1,60,3,60,1245,8,60,1, - 60,1,60,3,60,1249,8,60,1,60,5,60,1252,8,60,10,60,12,60,1255,9,60,1,61, - 1,61,1,61,3,61,1260,8,61,1,61,3,61,1263,8,61,1,62,1,62,1,62,1,63,3,63, - 1269,8,63,1,63,3,63,1272,8,63,1,63,1,63,1,63,1,63,3,63,1278,8,63,1,63, - 1,63,3,63,1282,8,63,1,63,1,63,3,63,1286,8,63,1,64,1,64,3,64,1290,8,64, - 1,64,1,64,3,64,1294,8,64,1,64,5,64,1297,8,64,10,64,12,64,1300,9,64,1, - 64,1,64,3,64,1304,8,64,1,64,1,64,3,64,1308,8,64,1,64,5,64,1311,8,64,10, - 64,12,64,1314,9,64,3,64,1316,8,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65, - 3,65,1325,8,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,1334,8,66,1,66, - 5,66,1337,8,66,10,66,12,66,1340,9,66,1,67,1,67,1,67,1,67,1,68,1,68,1, - 68,1,68,1,69,1,69,3,69,1352,8,69,1,69,3,69,1355,8,69,1,70,1,70,1,70,1, - 70,1,71,1,71,3,71,1363,8,71,1,71,1,71,3,71,1367,8,71,1,71,5,71,1370,8, - 71,10,71,12,71,1373,9,71,1,72,1,72,3,72,1377,8,72,1,72,1,72,3,72,1381, - 8,72,1,72,1,72,1,72,3,72,1386,8,72,1,73,1,73,1,74,1,74,3,74,1392,8,74, - 1,74,5,74,1395,8,74,10,74,12,74,1398,9,74,1,74,1,74,1,74,1,74,3,74,1404, - 8,74,1,75,1,75,3,75,1408,8,75,1,75,1,75,3,75,1412,8,75,3,75,1414,8,75, - 1,75,1,75,3,75,1418,8,75,3,75,1420,8,75,1,75,1,75,3,75,1424,8,75,3,75, - 1426,8,75,1,75,1,75,1,76,1,76,3,76,1432,8,76,1,76,1,76,1,77,1,77,3,77, - 1438,8,77,1,77,1,77,3,77,1442,8,77,1,77,3,77,1445,8,77,1,77,3,77,1448, - 8,77,1,77,1,77,1,77,1,77,3,77,1454,8,77,1,77,3,77,1457,8,77,1,77,3,77, - 1460,8,77,1,77,1,77,3,77,1464,8,77,1,77,1,77,1,77,1,77,3,77,1470,8,77, - 1,77,3,77,1473,8,77,1,77,3,77,1476,8,77,1,77,1,77,3,77,1480,8,77,1,78, - 1,78,3,78,1484,8,78,1,78,1,78,3,78,1488,8,78,3,78,1490,8,78,1,78,1,78, - 3,78,1494,8,78,3,78,1496,8,78,1,78,1,78,3,78,1500,8,78,3,78,1502,8,78, - 1,78,1,78,3,78,1506,8,78,3,78,1508,8,78,1,78,1,78,1,79,1,79,3,79,1514, - 8,79,1,79,1,79,3,79,1518,8,79,1,79,1,79,3,79,1522,8,79,1,79,1,79,3,79, - 1526,8,79,1,79,1,79,3,79,1530,8,79,1,79,1,79,3,79,1534,8,79,1,79,1,79, - 3,79,1538,8,79,1,79,1,79,3,79,1542,8,79,5,79,1544,8,79,10,79,12,79,1547, - 9,79,3,79,1549,8,79,1,79,1,79,1,80,1,80,3,80,1555,8,80,1,80,1,80,3,80, - 1559,8,80,1,80,1,80,3,80,1563,8,80,1,80,3,80,1566,8,80,1,80,5,80,1569, - 8,80,10,80,12,80,1572,9,80,1,81,1,81,3,81,1576,8,81,1,81,5,81,1579,8, - 81,10,81,12,81,1582,9,81,1,82,1,82,3,82,1586,8,82,1,82,1,82,1,83,1,83, - 3,83,1592,8,83,1,83,1,83,1,83,1,83,3,83,1598,8,83,1,83,3,83,1601,8,83, - 1,83,3,83,1604,8,83,1,83,3,83,1607,8,83,1,83,1,83,3,83,1611,8,83,1,83, - 3,83,1614,8,83,1,83,3,83,1617,8,83,1,83,3,83,1620,8,83,1,83,3,83,1623, - 8,83,1,84,1,84,3,84,1627,8,84,1,84,1,84,3,84,1631,8,84,1,84,1,84,3,84, - 1635,8,84,1,84,1,84,3,84,1639,8,84,1,84,1,84,3,84,1643,8,84,1,84,3,84, - 1646,8,84,1,84,3,84,1649,8,84,1,84,1,84,3,84,1653,8,84,1,84,1,84,3,84, - 1657,8,84,1,84,1,84,3,84,1661,8,84,1,84,1,84,3,84,1665,8,84,3,84,1667, - 8,84,1,84,1,84,1,85,1,85,3,85,1673,8,85,1,85,3,85,1676,8,85,1,85,3,85, - 1679,8,85,1,85,1,85,1,86,1,86,3,86,1685,8,86,1,86,3,86,1688,8,86,1,86, - 3,86,1691,8,86,1,86,1,86,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91, - 1,91,1,92,1,92,1,92,1,92,1,92,5,92,1710,8,92,10,92,12,92,1713,9,92,1, - 93,1,93,1,93,1,93,1,93,5,93,1720,8,93,10,93,12,93,1723,9,93,1,94,1,94, - 1,94,1,94,1,94,5,94,1730,8,94,10,94,12,94,1733,9,94,1,95,1,95,3,95,1737, - 8,95,5,95,1739,8,95,10,95,12,95,1742,9,95,1,95,1,95,1,96,1,96,3,96,1748, - 8,96,1,96,1,96,3,96,1752,8,96,1,96,1,96,3,96,1756,8,96,1,96,1,96,3,96, - 1760,8,96,1,96,1,96,3,96,1764,8,96,1,96,1,96,1,96,1,96,1,96,1,96,3,96, - 1772,8,96,1,96,1,96,3,96,1776,8,96,1,96,1,96,3,96,1780,8,96,1,96,1,96, - 3,96,1784,8,96,1,96,1,96,4,96,1788,8,96,11,96,12,96,1789,1,96,1,96,3, - 96,1794,8,96,1,97,1,97,1,98,1,98,3,98,1800,8,98,1,98,1,98,3,98,1804,8, - 98,1,98,5,98,1807,8,98,10,98,12,98,1810,9,98,1,99,1,99,3,99,1814,8,99, - 1,99,1,99,3,99,1818,8,99,1,99,5,99,1821,8,99,10,99,12,99,1824,9,99,1, - 100,1,100,3,100,1828,8,100,1,100,1,100,3,100,1832,8,100,1,100,1,100,5, - 100,1836,8,100,10,100,12,100,1839,9,100,1,101,1,101,1,102,1,102,3,102, - 1845,8,102,1,102,1,102,3,102,1849,8,102,1,102,1,102,5,102,1853,8,102, - 10,102,12,102,1856,9,102,1,103,1,103,1,104,1,104,3,104,1862,8,104,1,104, - 1,104,3,104,1866,8,104,1,104,1,104,5,104,1870,8,104,10,104,12,104,1873, - 9,104,1,105,1,105,1,106,1,106,3,106,1879,8,106,1,106,1,106,3,106,1883, - 8,106,1,106,5,106,1886,8,106,10,106,12,106,1889,9,106,1,107,1,107,3,107, - 1893,8,107,5,107,1895,8,107,10,107,12,107,1898,9,107,1,107,1,107,3,107, - 1902,8,107,1,107,3,107,1905,8,107,1,108,1,108,1,108,4,108,1910,8,108, - 11,108,12,108,1911,1,108,3,108,1915,8,108,1,109,1,109,1,109,3,109,1920, - 8,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,3,109,1929,8,109,1,109, - 1,109,3,109,1933,8,109,1,109,3,109,1936,8,109,1,110,1,110,1,110,1,110, - 1,110,1,110,1,110,1,110,1,110,1,110,1,110,3,110,1949,8,110,1,110,3,110, - 1952,8,110,1,110,1,110,1,111,3,111,1957,8,111,1,111,1,111,1,112,1,112, - 1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,3,112,1971,8,112,1,113, - 1,113,3,113,1975,8,113,1,113,5,113,1978,8,113,10,113,12,113,1981,9,113, - 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,3,114,1992,8,114, - 1,115,1,115,1,115,1,115,1,115,1,115,3,115,2000,8,115,1,116,1,116,1,117, - 1,117,3,117,2006,8,117,1,117,1,117,3,117,2010,8,117,1,117,1,117,3,117, - 2014,8,117,5,117,2016,8,117,10,117,12,117,2019,9,117,3,117,2021,8,117, - 1,117,1,117,1,118,1,118,3,118,2027,8,118,1,118,3,118,2030,8,118,1,119, - 1,119,3,119,2034,8,119,1,119,1,119,3,119,2038,8,119,1,119,1,119,3,119, - 2042,8,119,1,119,1,119,3,119,2046,8,119,5,119,2048,8,119,10,119,12,119, - 2051,9,119,1,119,1,119,1,120,1,120,3,120,2057,8,120,1,120,3,120,2060, - 8,120,1,120,1,120,3,120,2064,8,120,1,120,1,120,1,121,1,121,3,121,2070, - 8,121,1,121,1,121,3,121,2074,8,121,1,121,1,121,1,122,1,122,3,122,2080, - 8,122,1,122,1,122,3,122,2084,8,122,1,122,1,122,3,122,2088,8,122,1,122, - 1,122,1,122,3,122,2093,8,122,1,122,1,122,3,122,2097,8,122,1,122,1,122, - 3,122,2101,8,122,3,122,2103,8,122,1,122,1,122,3,122,2107,8,122,1,122, - 1,122,3,122,2111,8,122,1,122,1,122,3,122,2115,8,122,5,122,2117,8,122, - 10,122,12,122,2120,9,122,3,122,2122,8,122,1,122,1,122,3,122,2126,8,122, - 1,123,1,123,1,124,1,124,3,124,2132,8,124,1,124,1,124,1,124,3,124,2137, - 8,124,3,124,2139,8,124,1,124,1,124,1,125,1,125,3,125,2145,8,125,1,125, - 4,125,2148,8,125,11,125,12,125,2149,1,126,1,126,3,126,2154,8,126,1,126, - 1,126,3,126,2158,8,126,1,126,1,126,3,126,2162,8,126,1,126,1,126,3,126, - 2166,8,126,1,126,3,126,2169,8,126,1,126,3,126,2172,8,126,1,126,1,126, - 1,127,1,127,3,127,2178,8,127,1,127,1,127,3,127,2182,8,127,1,127,1,127, - 3,127,2186,8,127,1,127,1,127,3,127,2190,8,127,1,127,3,127,2193,8,127, - 1,127,3,127,2196,8,127,1,127,1,127,1,128,1,128,3,128,2202,8,128,1,128, - 1,128,3,128,2206,8,128,1,129,1,129,3,129,2210,8,129,1,129,4,129,2213, - 8,129,11,129,12,129,2214,1,129,1,129,3,129,2219,8,129,1,129,1,129,3,129, - 2223,8,129,1,129,4,129,2226,8,129,11,129,12,129,2227,3,129,2230,8,129, - 1,129,3,129,2233,8,129,1,129,1,129,3,129,2237,8,129,1,129,3,129,2240, - 8,129,1,129,3,129,2243,8,129,1,129,1,129,1,130,1,130,3,130,2249,8,130, - 1,130,1,130,3,130,2253,8,130,1,130,1,130,3,130,2257,8,130,1,130,1,130, - 1,131,1,131,1,132,1,132,3,132,2265,8,132,1,133,1,133,1,133,3,133,2270, - 8,133,1,134,1,134,3,134,2274,8,134,1,134,1,134,1,135,1,135,1,136,1,136, - 1,137,1,137,1,138,1,138,1,139,1,139,1,139,1,139,1,139,3,139,2291,8,139, - 1,140,1,140,1,141,1,141,1,142,1,142,1,143,1,143,1,143,0,1,64,144,0,2, + 7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,1,0,1,0,3,0,293, + 8,0,1,0,1,0,3,0,297,8,0,1,0,5,0,300,8,0,10,0,12,0,303,9,0,1,0,3,0,306, + 8,0,1,0,1,0,1,1,3,1,311,8,1,1,1,3,1,314,8,1,1,1,1,1,3,1,318,8,1,1,1,3, + 1,321,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,335,8,2, + 1,3,1,3,1,3,1,3,3,3,341,8,3,1,3,1,3,3,3,345,8,3,1,3,1,3,3,3,349,8,3,1, + 3,1,3,3,3,353,8,3,1,3,3,3,356,8,3,1,3,1,3,1,3,1,3,3,3,362,8,3,1,3,3,3, + 365,8,3,1,3,1,3,3,3,369,8,3,1,3,1,3,3,3,373,8,3,1,3,1,3,3,3,377,8,3,1, + 4,1,4,3,4,381,8,4,1,4,1,4,3,4,385,8,4,1,4,5,4,388,8,4,10,4,12,4,391,9, + 4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,401,8,5,1,5,1,5,3,5,405,8,5,1,5, + 1,5,3,5,409,8,5,1,5,5,5,412,8,5,10,5,12,5,415,9,5,1,5,1,5,1,5,1,5,1,5, + 1,5,1,6,1,6,1,6,1,6,3,6,427,8,6,1,6,1,6,3,6,431,8,6,1,6,1,6,1,6,1,6,1, + 6,1,6,3,6,439,8,6,1,6,1,6,3,6,443,8,6,1,6,1,6,3,6,447,8,6,1,6,1,6,3,6, + 451,8,6,1,7,1,7,1,7,1,7,1,7,1,7,3,7,459,8,7,1,7,1,7,3,7,463,8,7,1,7,1, + 7,3,7,467,8,7,1,7,1,7,3,7,471,8,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9, + 1,9,3,9,483,8,9,1,9,1,9,3,9,487,8,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,3,11, + 509,8,11,1,11,1,11,3,11,513,8,11,1,11,3,11,516,8,11,1,11,3,11,519,8,11, + 1,11,3,11,522,8,11,1,11,3,11,525,8,11,1,11,1,11,3,11,529,8,11,1,11,5, + 11,532,8,11,10,11,12,11,535,9,11,1,11,3,11,538,8,11,1,11,1,11,1,11,1, + 11,1,11,1,11,1,12,1,12,3,12,548,8,12,1,12,1,12,3,12,552,8,12,1,12,5,12, + 555,8,12,10,12,12,12,558,9,12,1,13,1,13,3,13,562,8,13,1,13,1,13,1,13, + 3,13,567,8,13,1,13,1,13,1,14,1,14,3,14,573,8,14,1,14,1,14,3,14,577,8, + 14,1,14,1,14,3,14,581,8,14,1,14,5,14,584,8,14,10,14,12,14,587,9,14,1, + 14,1,14,1,14,1,14,3,14,593,8,14,1,14,1,14,3,14,597,8,14,1,14,1,14,3,14, + 601,8,14,1,14,3,14,604,8,14,1,15,1,15,3,15,608,8,15,1,15,1,15,3,15,612, + 8,15,1,15,5,15,615,8,15,10,15,12,15,618,9,15,1,16,1,16,3,16,622,8,16, + 1,16,1,16,3,16,626,8,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,3,17, + 636,8,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,646,8,18,1,18,1, + 18,3,18,650,8,18,1,18,1,18,3,18,654,8,18,1,18,1,18,3,18,658,8,18,1,18, + 1,18,1,18,3,18,663,8,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19, + 1,19,3,19,675,8,19,1,19,1,19,3,19,679,8,19,1,19,1,19,3,19,683,8,19,1, + 19,1,19,3,19,687,8,19,1,19,1,19,3,19,691,8,19,3,19,693,8,19,1,19,1,19, + 3,19,697,8,19,1,19,1,19,3,19,701,8,19,3,19,703,8,19,1,19,1,19,1,20,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,717,8,20,1,20,1,20,3, + 20,721,8,20,1,20,1,20,3,20,725,8,20,1,20,1,20,3,20,729,8,20,1,20,4,20, + 732,8,20,11,20,12,20,733,1,20,3,20,737,8,20,1,20,1,20,3,20,741,8,20,1, + 20,1,20,3,20,745,8,20,3,20,747,8,20,1,20,1,20,3,20,751,8,20,1,20,1,20, + 3,20,755,8,20,3,20,757,8,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1, + 21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1, + 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,3,25,793,8, + 25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,804,8,26,1,27,1, + 27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1, + 29,1,29,1,29,1,30,1,30,3,30,826,8,30,1,30,1,30,3,30,830,8,30,1,30,5,30, + 833,8,30,10,30,12,30,836,9,30,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32, + 3,32,846,8,32,1,32,1,32,3,32,850,8,32,1,32,1,32,3,32,854,8,32,1,32,1, + 32,1,33,1,33,1,33,1,33,3,33,862,8,33,1,33,1,33,3,33,866,8,33,1,33,1,33, + 3,33,870,8,33,1,33,1,33,1,33,1,33,3,33,876,8,33,1,33,1,33,3,33,880,8, + 33,1,33,1,33,3,33,884,8,33,1,33,1,33,1,33,1,33,3,33,890,8,33,1,33,1,33, + 3,33,894,8,33,1,33,1,33,3,33,898,8,33,1,33,1,33,3,33,902,8,33,1,33,1, + 33,3,33,906,8,33,1,33,1,33,3,33,910,8,33,1,33,1,33,5,33,914,8,33,10,33, + 12,33,917,9,33,1,34,1,34,5,34,921,8,34,10,34,12,34,924,9,34,1,35,1,35, + 3,35,928,8,35,1,35,1,35,1,36,1,36,3,36,934,8,36,1,37,1,37,1,38,1,38,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3, + 39,954,8,39,1,40,1,40,3,40,958,8,40,1,41,1,41,1,41,1,41,1,41,1,41,3,41, + 966,8,41,1,42,1,42,1,42,1,42,1,43,1,43,1,44,1,44,3,44,976,8,44,1,44,5, + 44,979,8,44,10,44,12,44,982,9,44,1,44,1,44,3,44,986,8,44,4,44,988,8,44, + 11,44,12,44,989,1,44,1,44,1,44,3,44,995,8,44,1,45,1,45,1,45,1,45,3,45, + 1001,8,45,1,45,1,45,1,45,3,45,1006,8,45,1,45,3,45,1009,8,45,1,46,1,46, + 3,46,1013,8,46,1,47,1,47,3,47,1017,8,47,5,47,1019,8,47,10,47,12,47,1022, + 9,47,1,47,1,47,1,47,3,47,1027,8,47,5,47,1029,8,47,10,47,12,47,1032,9, + 47,1,47,1,47,3,47,1036,8,47,1,47,5,47,1039,8,47,10,47,12,47,1042,9,47, + 1,47,3,47,1045,8,47,1,47,3,47,1048,8,47,1,47,1,47,3,47,1052,8,47,4,47, + 1054,8,47,11,47,12,47,1055,1,47,1,47,3,47,1060,8,47,1,48,1,48,3,48,1064, + 8,48,4,48,1066,8,48,11,48,12,48,1067,1,48,1,48,1,49,1,49,3,49,1074,8, + 49,5,49,1076,8,49,10,49,12,49,1079,9,49,1,49,1,49,3,49,1083,8,49,5,49, + 1085,8,49,10,49,12,49,1088,9,49,1,49,1,49,1,50,1,50,1,50,1,50,3,50,1096, + 8,50,1,51,1,51,1,51,1,51,3,51,1102,8,51,1,52,1,52,1,52,1,52,1,52,1,52, + 3,52,1110,8,52,1,52,1,52,3,52,1114,8,52,1,52,1,52,3,52,1118,8,52,1,52, + 1,52,3,52,1122,8,52,1,52,1,52,1,52,1,52,1,52,3,52,1129,8,52,1,52,1,52, + 3,52,1133,8,52,1,52,1,52,3,52,1137,8,52,1,52,1,52,3,52,1141,8,52,1,52, + 3,52,1144,8,52,1,52,3,52,1147,8,52,1,52,3,52,1150,8,52,1,53,1,53,1,53, + 1,53,3,53,1156,8,53,1,53,3,53,1159,8,53,1,54,1,54,3,54,1163,8,54,1,54, + 1,54,3,54,1167,8,54,1,54,1,54,3,54,1171,8,54,1,54,3,54,1174,8,54,1,55, + 1,55,3,55,1178,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,3,56,1188, + 8,56,1,56,1,56,1,57,1,57,3,57,1194,8,57,1,57,1,57,1,57,5,57,1199,8,57, + 10,57,12,57,1202,9,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,3,58,1214,8,58,1,59,1,59,3,59,1218,8,59,1,59,1,59,3,59,1222,8,59,1, + 59,1,59,3,59,1226,8,59,1,59,5,59,1229,8,59,10,59,12,59,1232,9,59,1,60, + 1,60,3,60,1236,8,60,1,60,1,60,3,60,1240,8,60,1,60,1,60,1,61,1,61,3,61, + 1246,8,61,1,61,1,61,3,61,1250,8,61,1,61,1,61,3,61,1254,8,61,1,61,1,61, + 3,61,1258,8,61,1,61,5,61,1261,8,61,10,61,12,61,1264,9,61,1,62,1,62,1, + 62,3,62,1269,8,62,1,62,3,62,1272,8,62,1,63,1,63,1,63,1,64,3,64,1278,8, + 64,1,64,3,64,1281,8,64,1,64,1,64,1,64,1,64,3,64,1287,8,64,1,64,1,64,3, + 64,1291,8,64,1,64,1,64,3,64,1295,8,64,1,65,1,65,3,65,1299,8,65,1,65,1, + 65,3,65,1303,8,65,1,65,5,65,1306,8,65,10,65,12,65,1309,9,65,1,65,1,65, + 3,65,1313,8,65,1,65,1,65,3,65,1317,8,65,1,65,5,65,1320,8,65,10,65,12, + 65,1323,9,65,3,65,1325,8,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,1334, + 8,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,1343,8,67,1,67,5,67,1346, + 8,67,10,67,12,67,1349,9,67,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1, + 70,1,70,3,70,1361,8,70,1,70,3,70,1364,8,70,1,71,1,71,1,71,1,71,1,72,1, + 72,3,72,1372,8,72,1,72,1,72,3,72,1376,8,72,1,72,5,72,1379,8,72,10,72, + 12,72,1382,9,72,1,73,1,73,3,73,1386,8,73,1,73,1,73,3,73,1390,8,73,1,73, + 1,73,1,73,3,73,1395,8,73,1,74,1,74,1,75,1,75,3,75,1401,8,75,1,75,5,75, + 1404,8,75,10,75,12,75,1407,9,75,1,75,1,75,1,75,1,75,3,75,1413,8,75,1, + 76,1,76,3,76,1417,8,76,1,76,1,76,3,76,1421,8,76,3,76,1423,8,76,1,76,1, + 76,3,76,1427,8,76,3,76,1429,8,76,1,76,1,76,3,76,1433,8,76,3,76,1435,8, + 76,1,76,1,76,1,77,1,77,3,77,1441,8,77,1,77,1,77,1,78,1,78,3,78,1447,8, + 78,1,78,1,78,3,78,1451,8,78,1,78,3,78,1454,8,78,1,78,3,78,1457,8,78,1, + 78,1,78,1,78,1,78,3,78,1463,8,78,1,78,3,78,1466,8,78,1,78,3,78,1469,8, + 78,1,78,1,78,3,78,1473,8,78,1,78,1,78,1,78,1,78,3,78,1479,8,78,1,78,3, + 78,1482,8,78,1,78,3,78,1485,8,78,1,78,1,78,3,78,1489,8,78,1,79,1,79,3, + 79,1493,8,79,1,79,1,79,3,79,1497,8,79,3,79,1499,8,79,1,79,1,79,3,79,1503, + 8,79,3,79,1505,8,79,1,79,1,79,3,79,1509,8,79,3,79,1511,8,79,1,79,1,79, + 3,79,1515,8,79,3,79,1517,8,79,1,79,1,79,1,80,1,80,3,80,1523,8,80,1,80, + 1,80,3,80,1527,8,80,1,80,1,80,3,80,1531,8,80,1,80,1,80,3,80,1535,8,80, + 1,80,1,80,3,80,1539,8,80,1,80,1,80,3,80,1543,8,80,1,80,1,80,3,80,1547, + 8,80,1,80,1,80,3,80,1551,8,80,5,80,1553,8,80,10,80,12,80,1556,9,80,3, + 80,1558,8,80,1,80,1,80,1,81,1,81,3,81,1564,8,81,1,81,1,81,3,81,1568,8, + 81,1,81,1,81,3,81,1572,8,81,1,81,3,81,1575,8,81,1,81,5,81,1578,8,81,10, + 81,12,81,1581,9,81,1,82,1,82,3,82,1585,8,82,1,82,5,82,1588,8,82,10,82, + 12,82,1591,9,82,1,83,1,83,3,83,1595,8,83,1,83,1,83,1,84,1,84,3,84,1601, + 8,84,1,84,1,84,1,84,1,84,3,84,1607,8,84,1,84,3,84,1610,8,84,1,84,3,84, + 1613,8,84,1,84,3,84,1616,8,84,1,84,1,84,3,84,1620,8,84,1,84,3,84,1623, + 8,84,1,84,3,84,1626,8,84,1,84,3,84,1629,8,84,1,84,3,84,1632,8,84,1,85, + 1,85,3,85,1636,8,85,1,85,1,85,3,85,1640,8,85,1,85,1,85,3,85,1644,8,85, + 1,85,1,85,3,85,1648,8,85,1,85,1,85,3,85,1652,8,85,1,85,3,85,1655,8,85, + 1,85,3,85,1658,8,85,1,85,1,85,3,85,1662,8,85,1,85,1,85,3,85,1666,8,85, + 1,85,1,85,3,85,1670,8,85,1,85,1,85,3,85,1674,8,85,3,85,1676,8,85,1,85, + 1,85,1,86,1,86,3,86,1682,8,86,1,86,3,86,1685,8,86,1,86,3,86,1688,8,86, + 1,86,1,86,1,87,1,87,3,87,1694,8,87,1,87,3,87,1697,8,87,1,87,3,87,1700, + 8,87,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1,91,1,92,1,92,1,93, + 1,93,1,93,1,93,1,93,5,93,1719,8,93,10,93,12,93,1722,9,93,1,94,1,94,1, + 94,1,94,1,94,5,94,1729,8,94,10,94,12,94,1732,9,94,1,95,1,95,1,95,1,95, + 1,95,5,95,1739,8,95,10,95,12,95,1742,9,95,1,96,1,96,3,96,1746,8,96,5, + 96,1748,8,96,10,96,12,96,1751,9,96,1,96,1,96,1,97,1,97,3,97,1757,8,97, + 1,97,1,97,3,97,1761,8,97,1,97,1,97,3,97,1765,8,97,1,97,1,97,3,97,1769, + 8,97,1,97,1,97,3,97,1773,8,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,1781, + 8,97,1,97,1,97,3,97,1785,8,97,1,97,1,97,3,97,1789,8,97,1,97,1,97,3,97, + 1793,8,97,1,97,1,97,4,97,1797,8,97,11,97,12,97,1798,1,97,1,97,3,97,1803, + 8,97,1,98,1,98,1,99,1,99,3,99,1809,8,99,1,99,1,99,3,99,1813,8,99,1,99, + 5,99,1816,8,99,10,99,12,99,1819,9,99,1,100,1,100,3,100,1823,8,100,1,100, + 1,100,3,100,1827,8,100,1,100,5,100,1830,8,100,10,100,12,100,1833,9,100, + 1,101,1,101,3,101,1837,8,101,1,101,1,101,3,101,1841,8,101,1,101,1,101, + 5,101,1845,8,101,10,101,12,101,1848,9,101,1,102,1,102,1,103,1,103,3,103, + 1854,8,103,1,103,1,103,3,103,1858,8,103,1,103,1,103,5,103,1862,8,103, + 10,103,12,103,1865,9,103,1,104,1,104,1,105,1,105,3,105,1871,8,105,1,105, + 1,105,3,105,1875,8,105,1,105,1,105,5,105,1879,8,105,10,105,12,105,1882, + 9,105,1,106,1,106,1,107,1,107,3,107,1888,8,107,1,107,1,107,3,107,1892, + 8,107,1,107,5,107,1895,8,107,10,107,12,107,1898,9,107,1,108,1,108,3,108, + 1902,8,108,5,108,1904,8,108,10,108,12,108,1907,9,108,1,108,1,108,3,108, + 1911,8,108,1,108,3,108,1914,8,108,1,109,1,109,1,109,4,109,1919,8,109, + 11,109,12,109,1920,1,109,3,109,1924,8,109,1,110,1,110,1,110,3,110,1929, + 8,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,3,110,1938,8,110,1,110, + 1,110,3,110,1942,8,110,1,110,3,110,1945,8,110,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,1958,8,111,1,111,3,111, + 1961,8,111,1,111,1,111,1,112,3,112,1966,8,112,1,112,1,112,1,113,1,113, + 1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,3,113,1980,8,113,1,114, + 1,114,3,114,1984,8,114,1,114,5,114,1987,8,114,10,114,12,114,1990,9,114, + 1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,3,115,2001,8,115, + 1,116,1,116,1,116,1,116,1,116,1,116,3,116,2009,8,116,1,117,1,117,1,118, + 1,118,3,118,2015,8,118,1,118,1,118,3,118,2019,8,118,1,118,1,118,3,118, + 2023,8,118,5,118,2025,8,118,10,118,12,118,2028,9,118,3,118,2030,8,118, + 1,118,1,118,1,119,1,119,3,119,2036,8,119,1,119,3,119,2039,8,119,1,120, + 1,120,3,120,2043,8,120,1,120,1,120,3,120,2047,8,120,1,120,1,120,3,120, + 2051,8,120,1,120,1,120,3,120,2055,8,120,5,120,2057,8,120,10,120,12,120, + 2060,9,120,1,120,1,120,1,121,1,121,3,121,2066,8,121,1,121,3,121,2069, + 8,121,1,121,1,121,3,121,2073,8,121,1,121,1,121,1,122,1,122,3,122,2079, + 8,122,1,122,1,122,3,122,2083,8,122,1,122,1,122,1,123,1,123,3,123,2089, + 8,123,1,123,1,123,3,123,2093,8,123,1,123,1,123,3,123,2097,8,123,1,123, + 1,123,1,123,3,123,2102,8,123,1,123,1,123,3,123,2106,8,123,1,123,1,123, + 3,123,2110,8,123,3,123,2112,8,123,1,123,1,123,3,123,2116,8,123,1,123, + 1,123,3,123,2120,8,123,1,123,1,123,3,123,2124,8,123,5,123,2126,8,123, + 10,123,12,123,2129,9,123,3,123,2131,8,123,1,123,1,123,3,123,2135,8,123, + 1,124,1,124,1,125,1,125,3,125,2141,8,125,1,125,1,125,1,125,3,125,2146, + 8,125,3,125,2148,8,125,1,125,1,125,1,126,1,126,3,126,2154,8,126,1,126, + 4,126,2157,8,126,11,126,12,126,2158,1,127,1,127,3,127,2163,8,127,1,127, + 1,127,3,127,2167,8,127,1,127,1,127,3,127,2171,8,127,1,127,1,127,3,127, + 2175,8,127,1,127,3,127,2178,8,127,1,127,3,127,2181,8,127,1,127,1,127, + 1,128,1,128,3,128,2187,8,128,1,128,1,128,3,128,2191,8,128,1,128,1,128, + 3,128,2195,8,128,1,128,1,128,3,128,2199,8,128,1,128,3,128,2202,8,128, + 1,128,3,128,2205,8,128,1,128,1,128,1,129,1,129,3,129,2211,8,129,1,129, + 1,129,3,129,2215,8,129,1,130,1,130,3,130,2219,8,130,1,130,4,130,2222, + 8,130,11,130,12,130,2223,1,130,1,130,3,130,2228,8,130,1,130,1,130,3,130, + 2232,8,130,1,130,4,130,2235,8,130,11,130,12,130,2236,3,130,2239,8,130, + 1,130,3,130,2242,8,130,1,130,1,130,3,130,2246,8,130,1,130,3,130,2249, + 8,130,1,130,3,130,2252,8,130,1,130,1,130,1,131,1,131,3,131,2258,8,131, + 1,131,1,131,3,131,2262,8,131,1,131,1,131,3,131,2266,8,131,1,131,1,131, + 1,132,1,132,1,133,1,133,3,133,2274,8,133,1,134,1,134,1,134,3,134,2279, + 8,134,1,135,1,135,3,135,2283,8,135,1,135,1,135,1,136,1,136,1,137,1,137, + 1,138,1,138,1,139,1,139,1,140,1,140,1,140,1,140,1,140,3,140,2300,8,140, + 1,141,1,141,1,142,1,142,1,143,1,143,1,144,1,144,1,144,0,1,66,145,0,2, 4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50, 52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96, 98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132, @@ -337,701 +338,703 @@ void cypherParserInitialize() { 170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204, 206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240, 242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276, - 278,280,282,284,286,0,11,2,0,56,56,58,58,1,0,103,106,2,0,5,5,12,16,1, - 0,18,19,2,0,20,20,114,114,2,0,21,22,97,97,1,0,123,124,7,0,47,47,53,55, - 66,66,70,70,117,117,125,125,129,129,2,0,13,13,27,30,2,0,15,15,31,34,2, - 0,35,45,114,114,2606,0,288,1,0,0,0,2,308,1,0,0,0,4,331,1,0,0,0,6,333, - 1,0,0,0,8,375,1,0,0,0,10,389,1,0,0,0,12,419,1,0,0,0,14,449,1,0,0,0,16, - 469,1,0,0,0,18,481,1,0,0,0,20,493,1,0,0,0,22,536,1,0,0,0,24,550,1,0,0, - 0,26,594,1,0,0,0,28,596,1,0,0,0,30,610,1,0,0,0,32,626,1,0,0,0,34,628, - 1,0,0,0,36,657,1,0,0,0,38,697,1,0,0,0,40,751,1,0,0,0,42,759,1,0,0,0,44, - 765,1,0,0,0,46,771,1,0,0,0,48,783,1,0,0,0,50,785,1,0,0,0,52,796,1,0,0, - 0,54,800,1,0,0,0,56,806,1,0,0,0,58,814,1,0,0,0,60,828,1,0,0,0,62,832, - 1,0,0,0,64,900,1,0,0,0,66,909,1,0,0,0,68,916,1,0,0,0,70,924,1,0,0,0,72, - 926,1,0,0,0,74,928,1,0,0,0,76,944,1,0,0,0,78,948,1,0,0,0,80,950,1,0,0, - 0,82,958,1,0,0,0,84,962,1,0,0,0,86,985,1,0,0,0,88,999,1,0,0,0,90,1003, - 1,0,0,0,92,1050,1,0,0,0,94,1056,1,0,0,0,96,1068,1,0,0,0,98,1086,1,0,0, - 0,100,1092,1,0,0,0,102,1094,1,0,0,0,104,1142,1,0,0,0,106,1153,1,0,0,0, - 108,1166,1,0,0,0,110,1176,1,0,0,0,112,1182,1,0,0,0,114,1204,1,0,0,0,116, - 1206,1,0,0,0,118,1224,1,0,0,0,120,1236,1,0,0,0,122,1256,1,0,0,0,124,1264, - 1,0,0,0,126,1271,1,0,0,0,128,1315,1,0,0,0,130,1324,1,0,0,0,132,1326,1, - 0,0,0,134,1341,1,0,0,0,136,1345,1,0,0,0,138,1349,1,0,0,0,140,1356,1,0, - 0,0,142,1360,1,0,0,0,144,1385,1,0,0,0,146,1387,1,0,0,0,148,1403,1,0,0, - 0,150,1405,1,0,0,0,152,1429,1,0,0,0,154,1479,1,0,0,0,156,1481,1,0,0,0, - 158,1511,1,0,0,0,160,1552,1,0,0,0,162,1573,1,0,0,0,164,1583,1,0,0,0,166, - 1589,1,0,0,0,168,1624,1,0,0,0,170,1670,1,0,0,0,172,1682,1,0,0,0,174,1694, - 1,0,0,0,176,1696,1,0,0,0,178,1698,1,0,0,0,180,1700,1,0,0,0,182,1702,1, - 0,0,0,184,1704,1,0,0,0,186,1714,1,0,0,0,188,1724,1,0,0,0,190,1740,1,0, - 0,0,192,1793,1,0,0,0,194,1795,1,0,0,0,196,1797,1,0,0,0,198,1811,1,0,0, - 0,200,1825,1,0,0,0,202,1840,1,0,0,0,204,1842,1,0,0,0,206,1857,1,0,0,0, - 208,1859,1,0,0,0,210,1874,1,0,0,0,212,1876,1,0,0,0,214,1896,1,0,0,0,216, - 1906,1,0,0,0,218,1935,1,0,0,0,220,1948,1,0,0,0,222,1956,1,0,0,0,224,1970, - 1,0,0,0,226,1972,1,0,0,0,228,1991,1,0,0,0,230,1999,1,0,0,0,232,2001,1, - 0,0,0,234,2003,1,0,0,0,236,2024,1,0,0,0,238,2031,1,0,0,0,240,2056,1,0, - 0,0,242,2067,1,0,0,0,244,2125,1,0,0,0,246,2127,1,0,0,0,248,2138,1,0,0, - 0,250,2142,1,0,0,0,252,2151,1,0,0,0,254,2175,1,0,0,0,256,2199,1,0,0,0, - 258,2229,1,0,0,0,260,2246,1,0,0,0,262,2260,1,0,0,0,264,2264,1,0,0,0,266, - 2266,1,0,0,0,268,2271,1,0,0,0,270,2277,1,0,0,0,272,2279,1,0,0,0,274,2281, - 1,0,0,0,276,2283,1,0,0,0,278,2290,1,0,0,0,280,2292,1,0,0,0,282,2294,1, - 0,0,0,284,2296,1,0,0,0,286,2298,1,0,0,0,288,299,3,2,1,0,289,291,5,146, - 0,0,290,289,1,0,0,0,290,291,1,0,0,0,291,292,1,0,0,0,292,294,5,1,0,0,293, - 295,5,146,0,0,294,293,1,0,0,0,294,295,1,0,0,0,295,296,1,0,0,0,296,298, - 3,2,1,0,297,290,1,0,0,0,298,301,1,0,0,0,299,297,1,0,0,0,299,300,1,0,0, - 0,300,303,1,0,0,0,301,299,1,0,0,0,302,304,5,146,0,0,303,302,1,0,0,0,303, - 304,1,0,0,0,304,305,1,0,0,0,305,306,5,0,0,1,306,1,1,0,0,0,307,309,3,70, - 35,0,308,307,1,0,0,0,308,309,1,0,0,0,309,311,1,0,0,0,310,312,5,146,0, - 0,311,310,1,0,0,0,311,312,1,0,0,0,312,313,1,0,0,0,313,318,3,4,2,0,314, - 316,5,146,0,0,315,314,1,0,0,0,315,316,1,0,0,0,316,317,1,0,0,0,317,319, - 5,1,0,0,318,315,1,0,0,0,318,319,1,0,0,0,319,3,1,0,0,0,320,332,3,84,42, - 0,321,332,3,32,16,0,322,332,3,6,3,0,323,332,3,10,5,0,324,332,3,12,6,0, - 325,332,3,16,8,0,326,332,3,20,10,0,327,332,3,18,9,0,328,332,3,76,38,0, - 329,332,3,78,39,0,330,332,3,14,7,0,331,320,1,0,0,0,331,321,1,0,0,0,331, - 322,1,0,0,0,331,323,1,0,0,0,331,324,1,0,0,0,331,325,1,0,0,0,331,326,1, - 0,0,0,331,327,1,0,0,0,331,328,1,0,0,0,331,329,1,0,0,0,331,330,1,0,0,0, - 332,5,1,0,0,0,333,334,5,50,0,0,334,335,5,146,0,0,335,352,3,276,138,0, - 336,338,5,146,0,0,337,336,1,0,0,0,337,338,1,0,0,0,338,339,1,0,0,0,339, - 341,5,2,0,0,340,342,5,146,0,0,341,340,1,0,0,0,341,342,1,0,0,0,342,343, - 1,0,0,0,343,345,3,8,4,0,344,346,5,146,0,0,345,344,1,0,0,0,345,346,1,0, - 0,0,346,347,1,0,0,0,347,349,5,3,0,0,348,350,5,146,0,0,349,348,1,0,0,0, - 349,350,1,0,0,0,350,353,1,0,0,0,351,353,5,146,0,0,352,337,1,0,0,0,352, - 351,1,0,0,0,353,354,1,0,0,0,354,355,5,51,0,0,355,358,5,146,0,0,356,359, - 3,26,13,0,357,359,3,262,131,0,358,356,1,0,0,0,358,357,1,0,0,0,359,373, - 1,0,0,0,360,362,5,146,0,0,361,360,1,0,0,0,361,362,1,0,0,0,362,363,1,0, - 0,0,363,365,5,2,0,0,364,366,5,146,0,0,365,364,1,0,0,0,365,366,1,0,0,0, - 366,367,1,0,0,0,367,369,3,28,14,0,368,370,5,146,0,0,369,368,1,0,0,0,369, - 370,1,0,0,0,370,371,1,0,0,0,371,372,5,3,0,0,372,374,1,0,0,0,373,361,1, - 0,0,0,373,374,1,0,0,0,374,7,1,0,0,0,375,386,3,276,138,0,376,378,5,146, - 0,0,377,376,1,0,0,0,377,378,1,0,0,0,378,379,1,0,0,0,379,381,5,4,0,0,380, - 382,5,146,0,0,381,380,1,0,0,0,381,382,1,0,0,0,382,383,1,0,0,0,383,385, - 3,276,138,0,384,377,1,0,0,0,385,388,1,0,0,0,386,384,1,0,0,0,386,387,1, - 0,0,0,387,9,1,0,0,0,388,386,1,0,0,0,389,390,5,50,0,0,390,391,5,146,0, - 0,391,392,3,276,138,0,392,393,5,146,0,0,393,394,5,51,0,0,394,395,5,146, - 0,0,395,397,5,2,0,0,396,398,5,146,0,0,397,396,1,0,0,0,397,398,1,0,0,0, - 398,399,1,0,0,0,399,410,5,132,0,0,400,402,5,146,0,0,401,400,1,0,0,0,401, - 402,1,0,0,0,402,403,1,0,0,0,403,405,5,4,0,0,404,406,5,146,0,0,405,404, - 1,0,0,0,405,406,1,0,0,0,406,407,1,0,0,0,407,409,5,132,0,0,408,401,1,0, - 0,0,409,412,1,0,0,0,410,408,1,0,0,0,410,411,1,0,0,0,411,413,1,0,0,0,412, - 410,1,0,0,0,413,414,5,3,0,0,414,415,5,146,0,0,415,416,5,100,0,0,416,417, - 5,146,0,0,417,418,5,52,0,0,418,11,1,0,0,0,419,420,5,50,0,0,420,421,5, - 146,0,0,421,423,5,2,0,0,422,424,5,146,0,0,423,422,1,0,0,0,423,424,1,0, - 0,0,424,425,1,0,0,0,425,427,3,84,42,0,426,428,5,146,0,0,427,426,1,0,0, - 0,427,428,1,0,0,0,428,429,1,0,0,0,429,430,5,3,0,0,430,431,5,146,0,0,431, - 432,5,67,0,0,432,433,5,146,0,0,433,447,5,132,0,0,434,436,5,146,0,0,435, - 434,1,0,0,0,435,436,1,0,0,0,436,437,1,0,0,0,437,439,5,2,0,0,438,440,5, - 146,0,0,439,438,1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441,443,3,28, - 14,0,442,444,5,146,0,0,443,442,1,0,0,0,443,444,1,0,0,0,444,445,1,0,0, - 0,445,446,5,3,0,0,446,448,1,0,0,0,447,435,1,0,0,0,447,448,1,0,0,0,448, - 13,1,0,0,0,449,450,5,53,0,0,450,451,5,146,0,0,451,452,5,54,0,0,452,453, - 5,146,0,0,453,467,5,132,0,0,454,456,5,146,0,0,455,454,1,0,0,0,455,456, - 1,0,0,0,456,457,1,0,0,0,457,459,5,2,0,0,458,460,5,146,0,0,459,458,1,0, - 0,0,459,460,1,0,0,0,460,461,1,0,0,0,461,463,3,28,14,0,462,464,5,146,0, - 0,463,462,1,0,0,0,463,464,1,0,0,0,464,465,1,0,0,0,465,466,5,3,0,0,466, - 468,1,0,0,0,467,455,1,0,0,0,467,468,1,0,0,0,468,15,1,0,0,0,469,470,5, - 46,0,0,470,471,5,146,0,0,471,473,3,278,139,0,472,474,5,146,0,0,473,472, - 1,0,0,0,473,474,1,0,0,0,474,475,1,0,0,0,475,477,5,5,0,0,476,478,5,146, - 0,0,477,476,1,0,0,0,477,478,1,0,0,0,478,479,1,0,0,0,479,480,3,230,115, - 0,480,17,1,0,0,0,481,482,5,47,0,0,482,483,5,146,0,0,483,484,5,90,0,0, - 484,485,5,146,0,0,485,486,5,56,0,0,486,487,5,146,0,0,487,488,3,276,138, - 0,488,489,5,146,0,0,489,490,5,121,0,0,490,491,5,146,0,0,491,492,5,132, - 0,0,492,19,1,0,0,0,493,494,5,88,0,0,494,495,5,146,0,0,495,496,5,48,0, - 0,496,497,5,146,0,0,497,499,3,246,123,0,498,500,5,146,0,0,499,498,1,0, - 0,0,499,500,1,0,0,0,500,501,1,0,0,0,501,503,5,2,0,0,502,504,5,146,0,0, - 503,502,1,0,0,0,503,504,1,0,0,0,504,506,1,0,0,0,505,507,3,22,11,0,506, - 505,1,0,0,0,506,507,1,0,0,0,507,509,1,0,0,0,508,510,5,146,0,0,509,508, - 1,0,0,0,509,510,1,0,0,0,510,512,1,0,0,0,511,513,3,24,12,0,512,511,1,0, - 0,0,512,513,1,0,0,0,513,524,1,0,0,0,514,516,5,146,0,0,515,514,1,0,0,0, - 515,516,1,0,0,0,516,517,1,0,0,0,517,519,5,4,0,0,518,520,5,146,0,0,519, - 518,1,0,0,0,519,520,1,0,0,0,520,521,1,0,0,0,521,523,3,24,12,0,522,515, - 1,0,0,0,523,526,1,0,0,0,524,522,1,0,0,0,524,525,1,0,0,0,525,528,1,0,0, - 0,526,524,1,0,0,0,527,529,5,146,0,0,528,527,1,0,0,0,528,529,1,0,0,0,529, - 530,1,0,0,0,530,531,5,3,0,0,531,532,5,146,0,0,532,533,5,98,0,0,533,534, - 5,146,0,0,534,535,3,182,91,0,535,21,1,0,0,0,536,547,3,278,139,0,537,539, - 5,146,0,0,538,537,1,0,0,0,538,539,1,0,0,0,539,540,1,0,0,0,540,542,5,4, - 0,0,541,543,5,146,0,0,542,541,1,0,0,0,542,543,1,0,0,0,543,544,1,0,0,0, - 544,546,3,278,139,0,545,538,1,0,0,0,546,549,1,0,0,0,547,545,1,0,0,0,547, - 548,1,0,0,0,548,23,1,0,0,0,549,547,1,0,0,0,550,552,3,278,139,0,551,553, - 5,146,0,0,552,551,1,0,0,0,552,553,1,0,0,0,553,554,1,0,0,0,554,555,5,116, - 0,0,555,557,5,5,0,0,556,558,5,146,0,0,557,556,1,0,0,0,557,558,1,0,0,0, - 558,559,1,0,0,0,559,560,3,230,115,0,560,25,1,0,0,0,561,563,5,6,0,0,562, - 564,5,146,0,0,563,562,1,0,0,0,563,564,1,0,0,0,564,565,1,0,0,0,565,576, - 5,132,0,0,566,568,5,146,0,0,567,566,1,0,0,0,567,568,1,0,0,0,568,569,1, - 0,0,0,569,571,5,4,0,0,570,572,5,146,0,0,571,570,1,0,0,0,571,572,1,0,0, - 0,572,573,1,0,0,0,573,575,5,132,0,0,574,567,1,0,0,0,575,578,1,0,0,0,576, - 574,1,0,0,0,576,577,1,0,0,0,577,579,1,0,0,0,578,576,1,0,0,0,579,595,5, - 7,0,0,580,595,5,132,0,0,581,583,5,49,0,0,582,584,5,146,0,0,583,582,1, - 0,0,0,583,584,1,0,0,0,584,585,1,0,0,0,585,587,5,2,0,0,586,588,5,146,0, - 0,587,586,1,0,0,0,587,588,1,0,0,0,588,589,1,0,0,0,589,591,5,132,0,0,590, - 592,5,146,0,0,591,590,1,0,0,0,591,592,1,0,0,0,592,593,1,0,0,0,593,595, - 5,3,0,0,594,561,1,0,0,0,594,580,1,0,0,0,594,581,1,0,0,0,595,27,1,0,0, - 0,596,607,3,30,15,0,597,599,5,146,0,0,598,597,1,0,0,0,598,599,1,0,0,0, - 599,600,1,0,0,0,600,602,5,4,0,0,601,603,5,146,0,0,602,601,1,0,0,0,602, - 603,1,0,0,0,603,604,1,0,0,0,604,606,3,30,15,0,605,598,1,0,0,0,606,609, - 1,0,0,0,607,605,1,0,0,0,607,608,1,0,0,0,608,29,1,0,0,0,609,607,1,0,0, - 0,610,612,3,278,139,0,611,613,5,146,0,0,612,611,1,0,0,0,612,613,1,0,0, - 0,613,614,1,0,0,0,614,616,5,5,0,0,615,617,5,146,0,0,616,615,1,0,0,0,616, - 617,1,0,0,0,617,618,1,0,0,0,618,619,3,230,115,0,619,31,1,0,0,0,620,627, - 3,34,17,0,621,627,3,36,18,0,622,627,3,38,19,0,623,627,3,42,21,0,624,627, - 3,44,22,0,625,627,3,46,23,0,626,620,1,0,0,0,626,621,1,0,0,0,626,622,1, - 0,0,0,626,623,1,0,0,0,626,624,1,0,0,0,626,625,1,0,0,0,627,33,1,0,0,0, - 628,629,5,88,0,0,629,630,5,146,0,0,630,631,5,55,0,0,631,632,5,146,0,0, - 632,633,5,56,0,0,633,634,5,146,0,0,634,636,3,276,138,0,635,637,5,146, - 0,0,636,635,1,0,0,0,636,637,1,0,0,0,637,638,1,0,0,0,638,640,5,2,0,0,639, - 641,5,146,0,0,640,639,1,0,0,0,640,641,1,0,0,0,641,642,1,0,0,0,642,644, - 3,58,29,0,643,645,5,146,0,0,644,643,1,0,0,0,644,645,1,0,0,0,645,646,1, - 0,0,0,646,648,5,4,0,0,647,649,5,146,0,0,648,647,1,0,0,0,648,649,1,0,0, - 0,649,650,1,0,0,0,650,651,3,62,31,0,651,653,1,0,0,0,652,654,5,146,0,0, - 653,652,1,0,0,0,653,654,1,0,0,0,654,655,1,0,0,0,655,656,5,3,0,0,656,35, - 1,0,0,0,657,658,5,88,0,0,658,659,5,146,0,0,659,660,5,66,0,0,660,661,5, - 146,0,0,661,662,5,56,0,0,662,663,5,146,0,0,663,665,3,276,138,0,664,666, - 5,146,0,0,665,664,1,0,0,0,665,666,1,0,0,0,666,667,1,0,0,0,667,669,5,2, - 0,0,668,670,5,146,0,0,669,668,1,0,0,0,669,670,1,0,0,0,670,671,1,0,0,0, - 671,673,3,40,20,0,672,674,5,146,0,0,673,672,1,0,0,0,673,674,1,0,0,0,674, - 683,1,0,0,0,675,677,5,4,0,0,676,678,5,146,0,0,677,676,1,0,0,0,677,678, - 1,0,0,0,678,679,1,0,0,0,679,681,3,58,29,0,680,682,5,146,0,0,681,680,1, - 0,0,0,681,682,1,0,0,0,682,684,1,0,0,0,683,675,1,0,0,0,683,684,1,0,0,0, - 684,693,1,0,0,0,685,687,5,4,0,0,686,688,5,146,0,0,687,686,1,0,0,0,687, - 688,1,0,0,0,688,689,1,0,0,0,689,691,3,278,139,0,690,692,5,146,0,0,691, - 690,1,0,0,0,691,692,1,0,0,0,692,694,1,0,0,0,693,685,1,0,0,0,693,694,1, - 0,0,0,694,695,1,0,0,0,695,696,5,3,0,0,696,37,1,0,0,0,697,698,5,88,0,0, - 698,699,5,146,0,0,699,700,5,66,0,0,700,701,5,146,0,0,701,702,5,56,0,0, - 702,703,5,146,0,0,703,704,5,57,0,0,704,705,5,146,0,0,705,707,3,276,138, - 0,706,708,5,146,0,0,707,706,1,0,0,0,707,708,1,0,0,0,708,709,1,0,0,0,709, - 711,5,2,0,0,710,712,5,146,0,0,711,710,1,0,0,0,711,712,1,0,0,0,712,713, - 1,0,0,0,713,715,3,40,20,0,714,716,5,146,0,0,715,714,1,0,0,0,715,716,1, - 0,0,0,716,722,1,0,0,0,717,719,5,4,0,0,718,720,5,146,0,0,719,718,1,0,0, - 0,719,720,1,0,0,0,720,721,1,0,0,0,721,723,3,40,20,0,722,717,1,0,0,0,723, - 724,1,0,0,0,724,722,1,0,0,0,724,725,1,0,0,0,725,727,1,0,0,0,726,728,5, - 146,0,0,727,726,1,0,0,0,727,728,1,0,0,0,728,737,1,0,0,0,729,731,5,4,0, - 0,730,732,5,146,0,0,731,730,1,0,0,0,731,732,1,0,0,0,732,733,1,0,0,0,733, - 735,3,58,29,0,734,736,5,146,0,0,735,734,1,0,0,0,735,736,1,0,0,0,736,738, - 1,0,0,0,737,729,1,0,0,0,737,738,1,0,0,0,738,747,1,0,0,0,739,741,5,4,0, - 0,740,742,5,146,0,0,741,740,1,0,0,0,741,742,1,0,0,0,742,743,1,0,0,0,743, - 745,3,278,139,0,744,746,5,146,0,0,745,744,1,0,0,0,745,746,1,0,0,0,746, - 748,1,0,0,0,747,739,1,0,0,0,747,748,1,0,0,0,748,749,1,0,0,0,749,750,5, - 3,0,0,750,39,1,0,0,0,751,752,5,51,0,0,752,753,5,146,0,0,753,754,3,276, - 138,0,754,755,5,146,0,0,755,756,5,67,0,0,756,757,5,146,0,0,757,758,3, - 276,138,0,758,41,1,0,0,0,759,760,5,88,0,0,760,761,5,146,0,0,761,762,5, - 58,0,0,762,763,5,146,0,0,763,764,3,276,138,0,764,43,1,0,0,0,765,766,5, - 59,0,0,766,767,5,146,0,0,767,768,7,0,0,0,768,769,5,146,0,0,769,770,3, - 276,138,0,770,45,1,0,0,0,771,772,5,60,0,0,772,773,5,146,0,0,773,774,5, - 56,0,0,774,775,5,146,0,0,775,776,3,276,138,0,776,777,5,146,0,0,777,778, - 3,48,24,0,778,47,1,0,0,0,779,784,3,50,25,0,780,784,3,52,26,0,781,784, - 3,54,27,0,782,784,3,56,28,0,783,779,1,0,0,0,783,780,1,0,0,0,783,781,1, - 0,0,0,783,782,1,0,0,0,784,49,1,0,0,0,785,786,5,63,0,0,786,787,5,146,0, - 0,787,788,3,270,135,0,788,789,5,146,0,0,789,794,3,64,32,0,790,791,5,146, - 0,0,791,792,5,61,0,0,792,793,5,146,0,0,793,795,3,182,91,0,794,790,1,0, - 0,0,794,795,1,0,0,0,795,51,1,0,0,0,796,797,5,59,0,0,797,798,5,146,0,0, - 798,799,3,270,135,0,799,53,1,0,0,0,800,801,5,62,0,0,801,802,5,146,0,0, - 802,803,5,67,0,0,803,804,5,146,0,0,804,805,3,276,138,0,805,55,1,0,0,0, - 806,807,5,62,0,0,807,808,5,146,0,0,808,809,3,270,135,0,809,810,5,146, - 0,0,810,811,5,67,0,0,811,812,5,146,0,0,812,813,3,270,135,0,813,57,1,0, - 0,0,814,825,3,60,30,0,815,817,5,146,0,0,816,815,1,0,0,0,816,817,1,0,0, - 0,817,818,1,0,0,0,818,820,5,4,0,0,819,821,5,146,0,0,820,819,1,0,0,0,820, - 821,1,0,0,0,821,822,1,0,0,0,822,824,3,60,30,0,823,816,1,0,0,0,824,827, - 1,0,0,0,825,823,1,0,0,0,825,826,1,0,0,0,826,59,1,0,0,0,827,825,1,0,0, - 0,828,829,3,270,135,0,829,830,5,146,0,0,830,831,3,64,32,0,831,61,1,0, - 0,0,832,833,5,64,0,0,833,834,5,146,0,0,834,836,5,65,0,0,835,837,5,146, - 0,0,836,835,1,0,0,0,836,837,1,0,0,0,837,838,1,0,0,0,838,840,5,2,0,0,839, - 841,5,146,0,0,840,839,1,0,0,0,840,841,1,0,0,0,841,842,1,0,0,0,842,844, - 3,270,135,0,843,845,5,146,0,0,844,843,1,0,0,0,844,845,1,0,0,0,845,846, - 1,0,0,0,846,847,5,3,0,0,847,63,1,0,0,0,848,849,6,32,-1,0,849,901,3,278, - 139,0,850,852,5,81,0,0,851,853,5,146,0,0,852,851,1,0,0,0,852,853,1,0, - 0,0,853,854,1,0,0,0,854,856,5,2,0,0,855,857,5,146,0,0,856,855,1,0,0,0, - 856,857,1,0,0,0,857,858,1,0,0,0,858,860,3,58,29,0,859,861,5,146,0,0,860, - 859,1,0,0,0,860,861,1,0,0,0,861,862,1,0,0,0,862,863,5,3,0,0,863,901,1, - 0,0,0,864,866,3,278,139,0,865,867,5,146,0,0,866,865,1,0,0,0,866,867,1, - 0,0,0,867,868,1,0,0,0,868,870,5,2,0,0,869,871,5,146,0,0,870,869,1,0,0, - 0,870,871,1,0,0,0,871,872,1,0,0,0,872,874,3,58,29,0,873,875,5,146,0,0, - 874,873,1,0,0,0,874,875,1,0,0,0,875,876,1,0,0,0,876,877,5,3,0,0,877,901, - 1,0,0,0,878,880,3,278,139,0,879,881,5,146,0,0,880,879,1,0,0,0,880,881, - 1,0,0,0,881,882,1,0,0,0,882,884,5,2,0,0,883,885,5,146,0,0,884,883,1,0, - 0,0,884,885,1,0,0,0,885,886,1,0,0,0,886,888,3,64,32,0,887,889,5,146,0, - 0,888,887,1,0,0,0,888,889,1,0,0,0,889,890,1,0,0,0,890,892,5,4,0,0,891, - 893,5,146,0,0,892,891,1,0,0,0,892,893,1,0,0,0,893,894,1,0,0,0,894,896, - 3,64,32,0,895,897,5,146,0,0,896,895,1,0,0,0,896,897,1,0,0,0,897,898,1, - 0,0,0,898,899,5,3,0,0,899,901,1,0,0,0,900,848,1,0,0,0,900,850,1,0,0,0, - 900,864,1,0,0,0,900,878,1,0,0,0,901,906,1,0,0,0,902,903,10,4,0,0,903, - 905,3,66,33,0,904,902,1,0,0,0,905,908,1,0,0,0,906,904,1,0,0,0,906,907, - 1,0,0,0,907,65,1,0,0,0,908,906,1,0,0,0,909,913,3,68,34,0,910,912,3,68, - 34,0,911,910,1,0,0,0,912,915,1,0,0,0,913,911,1,0,0,0,913,914,1,0,0,0, - 914,67,1,0,0,0,915,913,1,0,0,0,916,918,5,6,0,0,917,919,3,272,136,0,918, - 917,1,0,0,0,918,919,1,0,0,0,919,920,1,0,0,0,920,921,5,7,0,0,921,69,1, - 0,0,0,922,925,3,72,36,0,923,925,3,74,37,0,924,922,1,0,0,0,924,923,1,0, - 0,0,925,71,1,0,0,0,926,927,5,68,0,0,927,73,1,0,0,0,928,929,5,69,0,0,929, - 75,1,0,0,0,930,931,5,70,0,0,931,932,5,146,0,0,932,945,5,71,0,0,933,934, - 5,70,0,0,934,935,5,146,0,0,935,936,5,71,0,0,936,937,5,146,0,0,937,938, - 5,72,0,0,938,939,5,146,0,0,939,945,5,73,0,0,940,945,5,75,0,0,941,945, - 5,76,0,0,942,945,5,77,0,0,943,945,5,78,0,0,944,930,1,0,0,0,944,933,1, - 0,0,0,944,940,1,0,0,0,944,941,1,0,0,0,944,942,1,0,0,0,944,943,1,0,0,0, - 945,77,1,0,0,0,946,949,3,80,40,0,947,949,3,82,41,0,948,946,1,0,0,0,948, - 947,1,0,0,0,949,79,1,0,0,0,950,951,5,83,0,0,951,952,5,146,0,0,952,953, - 5,80,0,0,953,956,5,146,0,0,954,957,5,132,0,0,955,957,3,262,131,0,956, - 954,1,0,0,0,956,955,1,0,0,0,957,81,1,0,0,0,958,959,5,79,0,0,959,960,5, - 146,0,0,960,961,3,262,131,0,961,83,1,0,0,0,962,963,3,86,43,0,963,85,1, - 0,0,0,964,971,3,90,45,0,965,967,5,146,0,0,966,965,1,0,0,0,966,967,1,0, - 0,0,967,968,1,0,0,0,968,970,3,88,44,0,969,966,1,0,0,0,970,973,1,0,0,0, - 971,969,1,0,0,0,971,972,1,0,0,0,972,986,1,0,0,0,973,971,1,0,0,0,974,976, - 3,124,62,0,975,977,5,146,0,0,976,975,1,0,0,0,976,977,1,0,0,0,977,979, - 1,0,0,0,978,974,1,0,0,0,979,980,1,0,0,0,980,978,1,0,0,0,980,981,1,0,0, - 0,981,982,1,0,0,0,982,983,3,90,45,0,983,984,6,43,-1,0,984,986,1,0,0,0, - 985,964,1,0,0,0,985,978,1,0,0,0,986,87,1,0,0,0,987,988,5,81,0,0,988,989, - 5,146,0,0,989,991,5,82,0,0,990,992,5,146,0,0,991,990,1,0,0,0,991,992, - 1,0,0,0,992,993,1,0,0,0,993,1000,3,90,45,0,994,996,5,81,0,0,995,997,5, - 146,0,0,996,995,1,0,0,0,996,997,1,0,0,0,997,998,1,0,0,0,998,1000,3,90, - 45,0,999,987,1,0,0,0,999,994,1,0,0,0,1000,89,1,0,0,0,1001,1004,3,92,46, - 0,1002,1004,3,94,47,0,1003,1001,1,0,0,0,1003,1002,1,0,0,0,1004,91,1,0, - 0,0,1005,1007,3,100,50,0,1006,1008,5,146,0,0,1007,1006,1,0,0,0,1007,1008, - 1,0,0,0,1008,1010,1,0,0,0,1009,1005,1,0,0,0,1010,1013,1,0,0,0,1011,1009, - 1,0,0,0,1011,1012,1,0,0,0,1012,1014,1,0,0,0,1013,1011,1,0,0,0,1014,1051, - 3,124,62,0,1015,1017,3,100,50,0,1016,1018,5,146,0,0,1017,1016,1,0,0,0, - 1017,1018,1,0,0,0,1018,1020,1,0,0,0,1019,1015,1,0,0,0,1020,1023,1,0,0, - 0,1021,1019,1,0,0,0,1021,1022,1,0,0,0,1022,1024,1,0,0,0,1023,1021,1,0, - 0,0,1024,1031,3,98,49,0,1025,1027,5,146,0,0,1026,1025,1,0,0,0,1026,1027, - 1,0,0,0,1027,1028,1,0,0,0,1028,1030,3,98,49,0,1029,1026,1,0,0,0,1030, - 1033,1,0,0,0,1031,1029,1,0,0,0,1031,1032,1,0,0,0,1032,1038,1,0,0,0,1033, - 1031,1,0,0,0,1034,1036,5,146,0,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0, - 1036,1037,1,0,0,0,1037,1039,3,124,62,0,1038,1035,1,0,0,0,1038,1039,1, - 0,0,0,1039,1051,1,0,0,0,1040,1042,3,100,50,0,1041,1043,5,146,0,0,1042, - 1041,1,0,0,0,1042,1043,1,0,0,0,1043,1045,1,0,0,0,1044,1040,1,0,0,0,1045, - 1046,1,0,0,0,1046,1044,1,0,0,0,1046,1047,1,0,0,0,1047,1048,1,0,0,0,1048, - 1049,6,46,-1,0,1049,1051,1,0,0,0,1050,1011,1,0,0,0,1050,1021,1,0,0,0, - 1050,1044,1,0,0,0,1051,93,1,0,0,0,1052,1054,3,96,48,0,1053,1055,5,146, - 0,0,1054,1053,1,0,0,0,1054,1055,1,0,0,0,1055,1057,1,0,0,0,1056,1052,1, - 0,0,0,1057,1058,1,0,0,0,1058,1056,1,0,0,0,1058,1059,1,0,0,0,1059,1060, - 1,0,0,0,1060,1061,3,92,46,0,1061,95,1,0,0,0,1062,1064,3,100,50,0,1063, - 1065,5,146,0,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1067,1,0,0,0, - 1066,1062,1,0,0,0,1067,1070,1,0,0,0,1068,1066,1,0,0,0,1068,1069,1,0,0, - 0,1069,1077,1,0,0,0,1070,1068,1,0,0,0,1071,1073,3,98,49,0,1072,1074,5, - 146,0,0,1073,1072,1,0,0,0,1073,1074,1,0,0,0,1074,1076,1,0,0,0,1075,1071, - 1,0,0,0,1076,1079,1,0,0,0,1077,1075,1,0,0,0,1077,1078,1,0,0,0,1078,1080, - 1,0,0,0,1079,1077,1,0,0,0,1080,1081,3,122,61,0,1081,97,1,0,0,0,1082,1087, - 3,110,55,0,1083,1087,3,112,56,0,1084,1087,3,116,58,0,1085,1087,3,120, - 60,0,1086,1082,1,0,0,0,1086,1083,1,0,0,0,1086,1084,1,0,0,0,1086,1085, - 1,0,0,0,1087,99,1,0,0,0,1088,1093,3,106,53,0,1089,1093,3,108,54,0,1090, - 1093,3,104,52,0,1091,1093,3,102,51,0,1092,1088,1,0,0,0,1092,1089,1,0, - 0,0,1092,1090,1,0,0,0,1092,1091,1,0,0,0,1093,101,1,0,0,0,1094,1112,5, - 83,0,0,1095,1096,5,146,0,0,1096,1097,5,94,0,0,1097,1098,5,146,0,0,1098, - 1100,5,84,0,0,1099,1101,5,146,0,0,1100,1099,1,0,0,0,1100,1101,1,0,0,0, - 1101,1102,1,0,0,0,1102,1104,5,2,0,0,1103,1105,5,146,0,0,1104,1103,1,0, - 0,0,1104,1105,1,0,0,0,1105,1106,1,0,0,0,1106,1108,3,58,29,0,1107,1109, - 5,146,0,0,1108,1107,1,0,0,0,1108,1109,1,0,0,0,1109,1110,1,0,0,0,1110, - 1111,5,3,0,0,1111,1113,1,0,0,0,1112,1095,1,0,0,0,1112,1113,1,0,0,0,1113, - 1114,1,0,0,0,1114,1115,5,146,0,0,1115,1116,5,51,0,0,1116,1134,5,146,0, - 0,1117,1131,3,26,13,0,1118,1120,5,146,0,0,1119,1118,1,0,0,0,1119,1120, - 1,0,0,0,1120,1121,1,0,0,0,1121,1123,5,2,0,0,1122,1124,5,146,0,0,1123, - 1122,1,0,0,0,1123,1124,1,0,0,0,1124,1125,1,0,0,0,1125,1127,3,28,14,0, - 1126,1128,5,146,0,0,1127,1126,1,0,0,0,1127,1128,1,0,0,0,1128,1129,1,0, - 0,0,1129,1130,5,3,0,0,1130,1132,1,0,0,0,1131,1119,1,0,0,0,1131,1132,1, - 0,0,0,1132,1135,1,0,0,0,1133,1135,3,262,131,0,1134,1117,1,0,0,0,1134, - 1133,1,0,0,0,1135,1140,1,0,0,0,1136,1138,5,146,0,0,1137,1136,1,0,0,0, - 1137,1138,1,0,0,0,1138,1139,1,0,0,0,1139,1141,3,140,70,0,1140,1137,1, - 0,0,0,1140,1141,1,0,0,0,1141,103,1,0,0,0,1142,1143,5,46,0,0,1143,1144, - 5,146,0,0,1144,1149,3,244,122,0,1145,1147,5,146,0,0,1146,1145,1,0,0,0, - 1146,1147,1,0,0,0,1147,1148,1,0,0,0,1148,1150,3,140,70,0,1149,1146,1, - 0,0,0,1149,1150,1,0,0,0,1150,105,1,0,0,0,1151,1152,5,85,0,0,1152,1154, - 5,146,0,0,1153,1151,1,0,0,0,1153,1154,1,0,0,0,1154,1155,1,0,0,0,1155, - 1157,5,86,0,0,1156,1158,5,146,0,0,1157,1156,1,0,0,0,1157,1158,1,0,0,0, - 1158,1159,1,0,0,0,1159,1164,3,142,71,0,1160,1162,5,146,0,0,1161,1160, - 1,0,0,0,1161,1162,1,0,0,0,1162,1163,1,0,0,0,1163,1165,3,140,70,0,1164, - 1161,1,0,0,0,1164,1165,1,0,0,0,1165,107,1,0,0,0,1166,1168,5,87,0,0,1167, - 1169,5,146,0,0,1168,1167,1,0,0,0,1168,1169,1,0,0,0,1169,1170,1,0,0,0, - 1170,1171,3,182,91,0,1171,1172,5,146,0,0,1172,1173,5,98,0,0,1173,1174, - 5,146,0,0,1174,1175,3,262,131,0,1175,109,1,0,0,0,1176,1178,5,88,0,0,1177, - 1179,5,146,0,0,1178,1177,1,0,0,0,1178,1179,1,0,0,0,1179,1180,1,0,0,0, - 1180,1181,3,142,71,0,1181,111,1,0,0,0,1182,1184,5,89,0,0,1183,1185,5, - 146,0,0,1184,1183,1,0,0,0,1184,1185,1,0,0,0,1185,1186,1,0,0,0,1186,1191, - 3,142,71,0,1187,1188,5,146,0,0,1188,1190,3,114,57,0,1189,1187,1,0,0,0, - 1190,1193,1,0,0,0,1191,1189,1,0,0,0,1191,1192,1,0,0,0,1192,113,1,0,0, - 0,1193,1191,1,0,0,0,1194,1195,5,90,0,0,1195,1196,5,146,0,0,1196,1197, - 5,86,0,0,1197,1198,5,146,0,0,1198,1205,3,116,58,0,1199,1200,5,90,0,0, - 1200,1201,5,146,0,0,1201,1202,5,88,0,0,1202,1203,5,146,0,0,1203,1205, - 3,116,58,0,1204,1194,1,0,0,0,1204,1199,1,0,0,0,1205,115,1,0,0,0,1206, - 1208,5,91,0,0,1207,1209,5,146,0,0,1208,1207,1,0,0,0,1208,1209,1,0,0,0, - 1209,1210,1,0,0,0,1210,1221,3,118,59,0,1211,1213,5,146,0,0,1212,1211, - 1,0,0,0,1212,1213,1,0,0,0,1213,1214,1,0,0,0,1214,1216,5,4,0,0,1215,1217, - 5,146,0,0,1216,1215,1,0,0,0,1216,1217,1,0,0,0,1217,1218,1,0,0,0,1218, - 1220,3,118,59,0,1219,1212,1,0,0,0,1220,1223,1,0,0,0,1221,1219,1,0,0,0, - 1221,1222,1,0,0,0,1222,117,1,0,0,0,1223,1221,1,0,0,0,1224,1226,3,268, - 134,0,1225,1227,5,146,0,0,1226,1225,1,0,0,0,1226,1227,1,0,0,0,1227,1228, - 1,0,0,0,1228,1230,5,5,0,0,1229,1231,5,146,0,0,1230,1229,1,0,0,0,1230, - 1231,1,0,0,0,1231,1232,1,0,0,0,1232,1233,3,182,91,0,1233,119,1,0,0,0, - 1234,1235,5,92,0,0,1235,1237,5,146,0,0,1236,1234,1,0,0,0,1236,1237,1, - 0,0,0,1237,1238,1,0,0,0,1238,1240,5,93,0,0,1239,1241,5,146,0,0,1240,1239, - 1,0,0,0,1240,1241,1,0,0,0,1241,1242,1,0,0,0,1242,1253,3,182,91,0,1243, - 1245,5,146,0,0,1244,1243,1,0,0,0,1244,1245,1,0,0,0,1245,1246,1,0,0,0, - 1246,1248,5,4,0,0,1247,1249,5,146,0,0,1248,1247,1,0,0,0,1248,1249,1,0, - 0,0,1249,1250,1,0,0,0,1250,1252,3,182,91,0,1251,1244,1,0,0,0,1252,1255, - 1,0,0,0,1253,1251,1,0,0,0,1253,1254,1,0,0,0,1254,121,1,0,0,0,1255,1253, - 1,0,0,0,1256,1257,5,94,0,0,1257,1262,3,126,63,0,1258,1260,5,146,0,0,1259, - 1258,1,0,0,0,1259,1260,1,0,0,0,1260,1261,1,0,0,0,1261,1263,3,140,70,0, - 1262,1259,1,0,0,0,1262,1263,1,0,0,0,1263,123,1,0,0,0,1264,1265,5,95,0, - 0,1265,1266,3,126,63,0,1266,125,1,0,0,0,1267,1269,5,146,0,0,1268,1267, - 1,0,0,0,1268,1269,1,0,0,0,1269,1270,1,0,0,0,1270,1272,5,96,0,0,1271,1268, - 1,0,0,0,1271,1272,1,0,0,0,1272,1273,1,0,0,0,1273,1274,5,146,0,0,1274, - 1277,3,128,64,0,1275,1276,5,146,0,0,1276,1278,3,132,66,0,1277,1275,1, - 0,0,0,1277,1278,1,0,0,0,1278,1281,1,0,0,0,1279,1280,5,146,0,0,1280,1282, - 3,134,67,0,1281,1279,1,0,0,0,1281,1282,1,0,0,0,1282,1285,1,0,0,0,1283, - 1284,5,146,0,0,1284,1286,3,136,68,0,1285,1283,1,0,0,0,1285,1286,1,0,0, - 0,1286,127,1,0,0,0,1287,1298,5,97,0,0,1288,1290,5,146,0,0,1289,1288,1, - 0,0,0,1289,1290,1,0,0,0,1290,1291,1,0,0,0,1291,1293,5,4,0,0,1292,1294, - 5,146,0,0,1293,1292,1,0,0,0,1293,1294,1,0,0,0,1294,1295,1,0,0,0,1295, - 1297,3,130,65,0,1296,1289,1,0,0,0,1297,1300,1,0,0,0,1298,1296,1,0,0,0, - 1298,1299,1,0,0,0,1299,1316,1,0,0,0,1300,1298,1,0,0,0,1301,1312,3,130, - 65,0,1302,1304,5,146,0,0,1303,1302,1,0,0,0,1303,1304,1,0,0,0,1304,1305, - 1,0,0,0,1305,1307,5,4,0,0,1306,1308,5,146,0,0,1307,1306,1,0,0,0,1307, - 1308,1,0,0,0,1308,1309,1,0,0,0,1309,1311,3,130,65,0,1310,1303,1,0,0,0, - 1311,1314,1,0,0,0,1312,1310,1,0,0,0,1312,1313,1,0,0,0,1313,1316,1,0,0, - 0,1314,1312,1,0,0,0,1315,1287,1,0,0,0,1315,1301,1,0,0,0,1316,129,1,0, - 0,0,1317,1318,3,182,91,0,1318,1319,5,146,0,0,1319,1320,5,98,0,0,1320, - 1321,5,146,0,0,1321,1322,3,262,131,0,1322,1325,1,0,0,0,1323,1325,3,182, - 91,0,1324,1317,1,0,0,0,1324,1323,1,0,0,0,1325,131,1,0,0,0,1326,1327,5, - 99,0,0,1327,1328,5,146,0,0,1328,1329,5,100,0,0,1329,1330,5,146,0,0,1330, - 1338,3,138,69,0,1331,1333,5,4,0,0,1332,1334,5,146,0,0,1333,1332,1,0,0, - 0,1333,1334,1,0,0,0,1334,1335,1,0,0,0,1335,1337,3,138,69,0,1336,1331, - 1,0,0,0,1337,1340,1,0,0,0,1338,1336,1,0,0,0,1338,1339,1,0,0,0,1339,133, - 1,0,0,0,1340,1338,1,0,0,0,1341,1342,5,101,0,0,1342,1343,5,146,0,0,1343, - 1344,3,182,91,0,1344,135,1,0,0,0,1345,1346,5,102,0,0,1346,1347,5,146, - 0,0,1347,1348,3,182,91,0,1348,137,1,0,0,0,1349,1354,3,182,91,0,1350,1352, - 5,146,0,0,1351,1350,1,0,0,0,1351,1352,1,0,0,0,1352,1353,1,0,0,0,1353, - 1355,7,1,0,0,1354,1351,1,0,0,0,1354,1355,1,0,0,0,1355,139,1,0,0,0,1356, - 1357,5,107,0,0,1357,1358,5,146,0,0,1358,1359,3,182,91,0,1359,141,1,0, - 0,0,1360,1371,3,144,72,0,1361,1363,5,146,0,0,1362,1361,1,0,0,0,1362,1363, - 1,0,0,0,1363,1364,1,0,0,0,1364,1366,5,4,0,0,1365,1367,5,146,0,0,1366, - 1365,1,0,0,0,1366,1367,1,0,0,0,1367,1368,1,0,0,0,1368,1370,3,144,72,0, - 1369,1362,1,0,0,0,1370,1373,1,0,0,0,1371,1369,1,0,0,0,1371,1372,1,0,0, - 0,1372,143,1,0,0,0,1373,1371,1,0,0,0,1374,1376,3,262,131,0,1375,1377, - 5,146,0,0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,1378,1,0,0,0,1378, - 1380,5,5,0,0,1379,1381,5,146,0,0,1380,1379,1,0,0,0,1380,1381,1,0,0,0, - 1381,1382,1,0,0,0,1382,1383,3,146,73,0,1383,1386,1,0,0,0,1384,1386,3, - 146,73,0,1385,1374,1,0,0,0,1385,1384,1,0,0,0,1386,145,1,0,0,0,1387,1388, - 3,148,74,0,1388,147,1,0,0,0,1389,1396,3,150,75,0,1390,1392,5,146,0,0, - 1391,1390,1,0,0,0,1391,1392,1,0,0,0,1392,1393,1,0,0,0,1393,1395,3,152, - 76,0,1394,1391,1,0,0,0,1395,1398,1,0,0,0,1396,1394,1,0,0,0,1396,1397, - 1,0,0,0,1397,1404,1,0,0,0,1398,1396,1,0,0,0,1399,1400,5,2,0,0,1400,1401, - 3,148,74,0,1401,1402,5,3,0,0,1402,1404,1,0,0,0,1403,1389,1,0,0,0,1403, - 1399,1,0,0,0,1404,149,1,0,0,0,1405,1407,5,2,0,0,1406,1408,5,146,0,0,1407, - 1406,1,0,0,0,1407,1408,1,0,0,0,1408,1413,1,0,0,0,1409,1411,3,262,131, - 0,1410,1412,5,146,0,0,1411,1410,1,0,0,0,1411,1412,1,0,0,0,1412,1414,1, - 0,0,0,1413,1409,1,0,0,0,1413,1414,1,0,0,0,1414,1419,1,0,0,0,1415,1417, - 3,162,81,0,1416,1418,5,146,0,0,1417,1416,1,0,0,0,1417,1418,1,0,0,0,1418, - 1420,1,0,0,0,1419,1415,1,0,0,0,1419,1420,1,0,0,0,1420,1425,1,0,0,0,1421, - 1423,3,158,79,0,1422,1424,5,146,0,0,1423,1422,1,0,0,0,1423,1424,1,0,0, - 0,1424,1426,1,0,0,0,1425,1421,1,0,0,0,1425,1426,1,0,0,0,1426,1427,1,0, - 0,0,1427,1428,5,3,0,0,1428,151,1,0,0,0,1429,1431,3,154,77,0,1430,1432, - 5,146,0,0,1431,1430,1,0,0,0,1431,1432,1,0,0,0,1432,1433,1,0,0,0,1433, - 1434,3,150,75,0,1434,153,1,0,0,0,1435,1437,3,282,141,0,1436,1438,5,146, - 0,0,1437,1436,1,0,0,0,1437,1438,1,0,0,0,1438,1439,1,0,0,0,1439,1441,3, - 286,143,0,1440,1442,5,146,0,0,1441,1440,1,0,0,0,1441,1442,1,0,0,0,1442, - 1444,1,0,0,0,1443,1445,3,156,78,0,1444,1443,1,0,0,0,1444,1445,1,0,0,0, - 1445,1447,1,0,0,0,1446,1448,5,146,0,0,1447,1446,1,0,0,0,1447,1448,1,0, - 0,0,1448,1449,1,0,0,0,1449,1450,3,286,143,0,1450,1480,1,0,0,0,1451,1453, - 3,286,143,0,1452,1454,5,146,0,0,1453,1452,1,0,0,0,1453,1454,1,0,0,0,1454, - 1456,1,0,0,0,1455,1457,3,156,78,0,1456,1455,1,0,0,0,1456,1457,1,0,0,0, - 1457,1459,1,0,0,0,1458,1460,5,146,0,0,1459,1458,1,0,0,0,1459,1460,1,0, - 0,0,1460,1461,1,0,0,0,1461,1463,3,286,143,0,1462,1464,5,146,0,0,1463, - 1462,1,0,0,0,1463,1464,1,0,0,0,1464,1465,1,0,0,0,1465,1466,3,284,142, - 0,1466,1480,1,0,0,0,1467,1469,3,286,143,0,1468,1470,5,146,0,0,1469,1468, - 1,0,0,0,1469,1470,1,0,0,0,1470,1472,1,0,0,0,1471,1473,3,156,78,0,1472, - 1471,1,0,0,0,1472,1473,1,0,0,0,1473,1475,1,0,0,0,1474,1476,5,146,0,0, - 1475,1474,1,0,0,0,1475,1476,1,0,0,0,1476,1477,1,0,0,0,1477,1478,3,286, - 143,0,1478,1480,1,0,0,0,1479,1435,1,0,0,0,1479,1451,1,0,0,0,1479,1467, - 1,0,0,0,1480,155,1,0,0,0,1481,1483,5,6,0,0,1482,1484,5,146,0,0,1483,1482, - 1,0,0,0,1483,1484,1,0,0,0,1484,1489,1,0,0,0,1485,1487,3,262,131,0,1486, - 1488,5,146,0,0,1487,1486,1,0,0,0,1487,1488,1,0,0,0,1488,1490,1,0,0,0, - 1489,1485,1,0,0,0,1489,1490,1,0,0,0,1490,1495,1,0,0,0,1491,1493,3,160, - 80,0,1492,1494,5,146,0,0,1493,1492,1,0,0,0,1493,1494,1,0,0,0,1494,1496, - 1,0,0,0,1495,1491,1,0,0,0,1495,1496,1,0,0,0,1496,1501,1,0,0,0,1497,1499, - 3,166,83,0,1498,1500,5,146,0,0,1499,1498,1,0,0,0,1499,1500,1,0,0,0,1500, - 1502,1,0,0,0,1501,1497,1,0,0,0,1501,1502,1,0,0,0,1502,1507,1,0,0,0,1503, - 1505,3,158,79,0,1504,1506,5,146,0,0,1505,1504,1,0,0,0,1505,1506,1,0,0, - 0,1506,1508,1,0,0,0,1507,1503,1,0,0,0,1507,1508,1,0,0,0,1508,1509,1,0, - 0,0,1509,1510,5,7,0,0,1510,157,1,0,0,0,1511,1513,5,8,0,0,1512,1514,5, - 146,0,0,1513,1512,1,0,0,0,1513,1514,1,0,0,0,1514,1548,1,0,0,0,1515,1517, - 3,270,135,0,1516,1518,5,146,0,0,1517,1516,1,0,0,0,1517,1518,1,0,0,0,1518, - 1519,1,0,0,0,1519,1521,5,116,0,0,1520,1522,5,146,0,0,1521,1520,1,0,0, - 0,1521,1522,1,0,0,0,1522,1523,1,0,0,0,1523,1525,3,182,91,0,1524,1526, - 5,146,0,0,1525,1524,1,0,0,0,1525,1526,1,0,0,0,1526,1545,1,0,0,0,1527, - 1529,5,4,0,0,1528,1530,5,146,0,0,1529,1528,1,0,0,0,1529,1530,1,0,0,0, - 1530,1531,1,0,0,0,1531,1533,3,270,135,0,1532,1534,5,146,0,0,1533,1532, - 1,0,0,0,1533,1534,1,0,0,0,1534,1535,1,0,0,0,1535,1537,5,116,0,0,1536, - 1538,5,146,0,0,1537,1536,1,0,0,0,1537,1538,1,0,0,0,1538,1539,1,0,0,0, - 1539,1541,3,182,91,0,1540,1542,5,146,0,0,1541,1540,1,0,0,0,1541,1542, - 1,0,0,0,1542,1544,1,0,0,0,1543,1527,1,0,0,0,1544,1547,1,0,0,0,1545,1543, - 1,0,0,0,1545,1546,1,0,0,0,1546,1549,1,0,0,0,1547,1545,1,0,0,0,1548,1515, - 1,0,0,0,1548,1549,1,0,0,0,1549,1550,1,0,0,0,1550,1551,5,9,0,0,1551,159, - 1,0,0,0,1552,1554,5,116,0,0,1553,1555,5,146,0,0,1554,1553,1,0,0,0,1554, - 1555,1,0,0,0,1555,1556,1,0,0,0,1556,1570,3,180,90,0,1557,1559,5,146,0, - 0,1558,1557,1,0,0,0,1558,1559,1,0,0,0,1559,1560,1,0,0,0,1560,1562,5,10, - 0,0,1561,1563,5,116,0,0,1562,1561,1,0,0,0,1562,1563,1,0,0,0,1563,1565, - 1,0,0,0,1564,1566,5,146,0,0,1565,1564,1,0,0,0,1565,1566,1,0,0,0,1566, - 1567,1,0,0,0,1567,1569,3,180,90,0,1568,1558,1,0,0,0,1569,1572,1,0,0,0, - 1570,1568,1,0,0,0,1570,1571,1,0,0,0,1571,161,1,0,0,0,1572,1570,1,0,0, - 0,1573,1580,3,164,82,0,1574,1576,5,146,0,0,1575,1574,1,0,0,0,1575,1576, - 1,0,0,0,1576,1577,1,0,0,0,1577,1579,3,164,82,0,1578,1575,1,0,0,0,1579, - 1582,1,0,0,0,1580,1578,1,0,0,0,1580,1581,1,0,0,0,1581,163,1,0,0,0,1582, - 1580,1,0,0,0,1583,1585,5,116,0,0,1584,1586,5,146,0,0,1585,1584,1,0,0, - 0,1585,1586,1,0,0,0,1586,1587,1,0,0,0,1587,1588,3,178,89,0,1588,165,1, - 0,0,0,1589,1591,5,97,0,0,1590,1592,5,146,0,0,1591,1590,1,0,0,0,1591,1592, - 1,0,0,0,1592,1597,1,0,0,0,1593,1598,5,108,0,0,1594,1595,5,82,0,0,1595, - 1596,5,146,0,0,1596,1598,5,108,0,0,1597,1593,1,0,0,0,1597,1594,1,0,0, - 0,1597,1598,1,0,0,0,1598,1600,1,0,0,0,1599,1601,5,146,0,0,1600,1599,1, - 0,0,0,1600,1601,1,0,0,0,1601,1616,1,0,0,0,1602,1604,3,174,87,0,1603,1602, - 1,0,0,0,1603,1604,1,0,0,0,1604,1606,1,0,0,0,1605,1607,5,146,0,0,1606, - 1605,1,0,0,0,1606,1607,1,0,0,0,1607,1608,1,0,0,0,1608,1610,5,11,0,0,1609, - 1611,5,146,0,0,1610,1609,1,0,0,0,1610,1611,1,0,0,0,1611,1613,1,0,0,0, - 1612,1614,3,176,88,0,1613,1612,1,0,0,0,1613,1614,1,0,0,0,1614,1617,1, - 0,0,0,1615,1617,3,272,136,0,1616,1603,1,0,0,0,1616,1615,1,0,0,0,1616, - 1617,1,0,0,0,1617,1622,1,0,0,0,1618,1620,5,146,0,0,1619,1618,1,0,0,0, - 1619,1620,1,0,0,0,1620,1621,1,0,0,0,1621,1623,3,168,84,0,1622,1619,1, - 0,0,0,1622,1623,1,0,0,0,1623,167,1,0,0,0,1624,1626,5,2,0,0,1625,1627, - 5,146,0,0,1626,1625,1,0,0,0,1626,1627,1,0,0,0,1627,1628,1,0,0,0,1628, - 1630,3,262,131,0,1629,1631,5,146,0,0,1630,1629,1,0,0,0,1630,1631,1,0, - 0,0,1631,1632,1,0,0,0,1632,1634,5,4,0,0,1633,1635,5,146,0,0,1634,1633, - 1,0,0,0,1634,1635,1,0,0,0,1635,1636,1,0,0,0,1636,1645,3,262,131,0,1637, - 1639,5,146,0,0,1638,1637,1,0,0,0,1638,1639,1,0,0,0,1639,1640,1,0,0,0, - 1640,1642,5,10,0,0,1641,1643,5,146,0,0,1642,1641,1,0,0,0,1642,1643,1, - 0,0,0,1643,1644,1,0,0,0,1644,1646,3,140,70,0,1645,1638,1,0,0,0,1645,1646, - 1,0,0,0,1646,1666,1,0,0,0,1647,1649,5,146,0,0,1648,1647,1,0,0,0,1648, - 1649,1,0,0,0,1649,1650,1,0,0,0,1650,1652,5,10,0,0,1651,1653,5,146,0,0, - 1652,1651,1,0,0,0,1652,1653,1,0,0,0,1653,1654,1,0,0,0,1654,1656,3,172, - 86,0,1655,1657,5,146,0,0,1656,1655,1,0,0,0,1656,1657,1,0,0,0,1657,1658, - 1,0,0,0,1658,1660,5,4,0,0,1659,1661,5,146,0,0,1660,1659,1,0,0,0,1660, - 1661,1,0,0,0,1661,1662,1,0,0,0,1662,1664,3,170,85,0,1663,1665,5,146,0, - 0,1664,1663,1,0,0,0,1664,1665,1,0,0,0,1665,1667,1,0,0,0,1666,1648,1,0, - 0,0,1666,1667,1,0,0,0,1667,1668,1,0,0,0,1668,1669,5,3,0,0,1669,169,1, - 0,0,0,1670,1672,5,8,0,0,1671,1673,5,146,0,0,1672,1671,1,0,0,0,1672,1673, - 1,0,0,0,1673,1675,1,0,0,0,1674,1676,3,128,64,0,1675,1674,1,0,0,0,1675, - 1676,1,0,0,0,1676,1678,1,0,0,0,1677,1679,5,146,0,0,1678,1677,1,0,0,0, - 1678,1679,1,0,0,0,1679,1680,1,0,0,0,1680,1681,5,9,0,0,1681,171,1,0,0, - 0,1682,1684,5,8,0,0,1683,1685,5,146,0,0,1684,1683,1,0,0,0,1684,1685,1, - 0,0,0,1685,1687,1,0,0,0,1686,1688,3,128,64,0,1687,1686,1,0,0,0,1687,1688, - 1,0,0,0,1688,1690,1,0,0,0,1689,1691,5,146,0,0,1690,1689,1,0,0,0,1690, - 1691,1,0,0,0,1691,1692,1,0,0,0,1692,1693,5,9,0,0,1693,173,1,0,0,0,1694, - 1695,5,134,0,0,1695,175,1,0,0,0,1696,1697,5,134,0,0,1697,177,1,0,0,0, - 1698,1699,3,276,138,0,1699,179,1,0,0,0,1700,1701,3,276,138,0,1701,181, - 1,0,0,0,1702,1703,3,184,92,0,1703,183,1,0,0,0,1704,1711,3,186,93,0,1705, - 1706,5,146,0,0,1706,1707,5,109,0,0,1707,1708,5,146,0,0,1708,1710,3,186, - 93,0,1709,1705,1,0,0,0,1710,1713,1,0,0,0,1711,1709,1,0,0,0,1711,1712, - 1,0,0,0,1712,185,1,0,0,0,1713,1711,1,0,0,0,1714,1721,3,188,94,0,1715, - 1716,5,146,0,0,1716,1717,5,110,0,0,1717,1718,5,146,0,0,1718,1720,3,188, - 94,0,1719,1715,1,0,0,0,1720,1723,1,0,0,0,1721,1719,1,0,0,0,1721,1722, - 1,0,0,0,1722,187,1,0,0,0,1723,1721,1,0,0,0,1724,1731,3,190,95,0,1725, - 1726,5,146,0,0,1726,1727,5,111,0,0,1727,1728,5,146,0,0,1728,1730,3,190, - 95,0,1729,1725,1,0,0,0,1730,1733,1,0,0,0,1731,1729,1,0,0,0,1731,1732, - 1,0,0,0,1732,189,1,0,0,0,1733,1731,1,0,0,0,1734,1736,5,112,0,0,1735,1737, - 5,146,0,0,1736,1735,1,0,0,0,1736,1737,1,0,0,0,1737,1739,1,0,0,0,1738, - 1734,1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741,1,0,0,0,1741, - 1743,1,0,0,0,1742,1740,1,0,0,0,1743,1744,3,192,96,0,1744,191,1,0,0,0, - 1745,1755,3,196,98,0,1746,1748,5,146,0,0,1747,1746,1,0,0,0,1747,1748, - 1,0,0,0,1748,1749,1,0,0,0,1749,1751,3,194,97,0,1750,1752,5,146,0,0,1751, - 1750,1,0,0,0,1751,1752,1,0,0,0,1752,1753,1,0,0,0,1753,1754,3,196,98,0, - 1754,1756,1,0,0,0,1755,1747,1,0,0,0,1755,1756,1,0,0,0,1756,1794,1,0,0, - 0,1757,1759,3,196,98,0,1758,1760,5,146,0,0,1759,1758,1,0,0,0,1759,1760, - 1,0,0,0,1760,1761,1,0,0,0,1761,1763,5,113,0,0,1762,1764,5,146,0,0,1763, - 1762,1,0,0,0,1763,1764,1,0,0,0,1764,1765,1,0,0,0,1765,1766,3,196,98,0, - 1766,1767,1,0,0,0,1767,1768,6,96,-1,0,1768,1794,1,0,0,0,1769,1771,3,196, - 98,0,1770,1772,5,146,0,0,1771,1770,1,0,0,0,1771,1772,1,0,0,0,1772,1773, - 1,0,0,0,1773,1775,3,194,97,0,1774,1776,5,146,0,0,1775,1774,1,0,0,0,1775, - 1776,1,0,0,0,1776,1777,1,0,0,0,1777,1787,3,196,98,0,1778,1780,5,146,0, - 0,1779,1778,1,0,0,0,1779,1780,1,0,0,0,1780,1781,1,0,0,0,1781,1783,3,194, - 97,0,1782,1784,5,146,0,0,1783,1782,1,0,0,0,1783,1784,1,0,0,0,1784,1785, - 1,0,0,0,1785,1786,3,196,98,0,1786,1788,1,0,0,0,1787,1779,1,0,0,0,1788, - 1789,1,0,0,0,1789,1787,1,0,0,0,1789,1790,1,0,0,0,1790,1791,1,0,0,0,1791, - 1792,6,96,-1,0,1792,1794,1,0,0,0,1793,1745,1,0,0,0,1793,1757,1,0,0,0, - 1793,1769,1,0,0,0,1794,193,1,0,0,0,1795,1796,7,2,0,0,1796,195,1,0,0,0, - 1797,1808,3,198,99,0,1798,1800,5,146,0,0,1799,1798,1,0,0,0,1799,1800, - 1,0,0,0,1800,1801,1,0,0,0,1801,1803,5,10,0,0,1802,1804,5,146,0,0,1803, - 1802,1,0,0,0,1803,1804,1,0,0,0,1804,1805,1,0,0,0,1805,1807,3,198,99,0, - 1806,1799,1,0,0,0,1807,1810,1,0,0,0,1808,1806,1,0,0,0,1808,1809,1,0,0, - 0,1809,197,1,0,0,0,1810,1808,1,0,0,0,1811,1822,3,200,100,0,1812,1814, - 5,146,0,0,1813,1812,1,0,0,0,1813,1814,1,0,0,0,1814,1815,1,0,0,0,1815, - 1817,5,17,0,0,1816,1818,5,146,0,0,1817,1816,1,0,0,0,1817,1818,1,0,0,0, - 1818,1819,1,0,0,0,1819,1821,3,200,100,0,1820,1813,1,0,0,0,1821,1824,1, - 0,0,0,1822,1820,1,0,0,0,1822,1823,1,0,0,0,1823,199,1,0,0,0,1824,1822, - 1,0,0,0,1825,1837,3,204,102,0,1826,1828,5,146,0,0,1827,1826,1,0,0,0,1827, - 1828,1,0,0,0,1828,1829,1,0,0,0,1829,1831,3,202,101,0,1830,1832,5,146, - 0,0,1831,1830,1,0,0,0,1831,1832,1,0,0,0,1832,1833,1,0,0,0,1833,1834,3, - 204,102,0,1834,1836,1,0,0,0,1835,1827,1,0,0,0,1836,1839,1,0,0,0,1837, - 1835,1,0,0,0,1837,1838,1,0,0,0,1838,201,1,0,0,0,1839,1837,1,0,0,0,1840, - 1841,7,3,0,0,1841,203,1,0,0,0,1842,1854,3,208,104,0,1843,1845,5,146,0, - 0,1844,1843,1,0,0,0,1844,1845,1,0,0,0,1845,1846,1,0,0,0,1846,1848,3,206, - 103,0,1847,1849,5,146,0,0,1848,1847,1,0,0,0,1848,1849,1,0,0,0,1849,1850, - 1,0,0,0,1850,1851,3,208,104,0,1851,1853,1,0,0,0,1852,1844,1,0,0,0,1853, - 1856,1,0,0,0,1854,1852,1,0,0,0,1854,1855,1,0,0,0,1855,205,1,0,0,0,1856, - 1854,1,0,0,0,1857,1858,7,4,0,0,1858,207,1,0,0,0,1859,1871,3,212,106,0, - 1860,1862,5,146,0,0,1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1863,1,0, - 0,0,1863,1865,3,210,105,0,1864,1866,5,146,0,0,1865,1864,1,0,0,0,1865, - 1866,1,0,0,0,1866,1867,1,0,0,0,1867,1868,3,212,106,0,1868,1870,1,0,0, - 0,1869,1861,1,0,0,0,1870,1873,1,0,0,0,1871,1869,1,0,0,0,1871,1872,1,0, - 0,0,1872,209,1,0,0,0,1873,1871,1,0,0,0,1874,1875,7,5,0,0,1875,211,1,0, - 0,0,1876,1887,3,214,107,0,1877,1879,5,146,0,0,1878,1877,1,0,0,0,1878, - 1879,1,0,0,0,1879,1880,1,0,0,0,1880,1882,5,23,0,0,1881,1883,5,146,0,0, - 1882,1881,1,0,0,0,1882,1883,1,0,0,0,1883,1884,1,0,0,0,1884,1886,3,214, - 107,0,1885,1878,1,0,0,0,1886,1889,1,0,0,0,1887,1885,1,0,0,0,1887,1888, - 1,0,0,0,1888,213,1,0,0,0,1889,1887,1,0,0,0,1890,1892,5,114,0,0,1891,1893, - 5,146,0,0,1892,1891,1,0,0,0,1892,1893,1,0,0,0,1893,1895,1,0,0,0,1894, - 1890,1,0,0,0,1895,1898,1,0,0,0,1896,1894,1,0,0,0,1896,1897,1,0,0,0,1897, - 1899,1,0,0,0,1898,1896,1,0,0,0,1899,1904,3,216,108,0,1900,1902,5,146, - 0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0,0,0,1903,1905,5, - 115,0,0,1904,1901,1,0,0,0,1904,1905,1,0,0,0,1905,215,1,0,0,0,1906,1914, - 3,226,113,0,1907,1915,3,220,110,0,1908,1910,3,218,109,0,1909,1908,1,0, - 0,0,1910,1911,1,0,0,0,1911,1909,1,0,0,0,1911,1912,1,0,0,0,1912,1915,1, - 0,0,0,1913,1915,3,224,112,0,1914,1907,1,0,0,0,1914,1909,1,0,0,0,1914, - 1913,1,0,0,0,1914,1915,1,0,0,0,1915,217,1,0,0,0,1916,1917,5,146,0,0,1917, - 1919,5,117,0,0,1918,1920,5,146,0,0,1919,1918,1,0,0,0,1919,1920,1,0,0, - 0,1920,1921,1,0,0,0,1921,1936,3,226,113,0,1922,1923,5,6,0,0,1923,1924, - 3,182,91,0,1924,1925,5,7,0,0,1925,1936,1,0,0,0,1926,1928,5,6,0,0,1927, - 1929,3,182,91,0,1928,1927,1,0,0,0,1928,1929,1,0,0,0,1929,1930,1,0,0,0, - 1930,1932,5,116,0,0,1931,1933,3,182,91,0,1932,1931,1,0,0,0,1932,1933, - 1,0,0,0,1933,1934,1,0,0,0,1934,1936,5,7,0,0,1935,1916,1,0,0,0,1935,1922, - 1,0,0,0,1935,1926,1,0,0,0,1936,219,1,0,0,0,1937,1949,3,222,111,0,1938, - 1939,5,146,0,0,1939,1940,5,118,0,0,1940,1941,5,146,0,0,1941,1949,5,94, - 0,0,1942,1943,5,146,0,0,1943,1944,5,119,0,0,1944,1945,5,146,0,0,1945, - 1949,5,94,0,0,1946,1947,5,146,0,0,1947,1949,5,120,0,0,1948,1937,1,0,0, - 0,1948,1938,1,0,0,0,1948,1942,1,0,0,0,1948,1946,1,0,0,0,1949,1951,1,0, - 0,0,1950,1952,5,146,0,0,1951,1950,1,0,0,0,1951,1952,1,0,0,0,1952,1953, - 1,0,0,0,1953,1954,3,226,113,0,1954,221,1,0,0,0,1955,1957,5,146,0,0,1956, - 1955,1,0,0,0,1956,1957,1,0,0,0,1957,1958,1,0,0,0,1958,1959,5,24,0,0,1959, - 223,1,0,0,0,1960,1961,5,146,0,0,1961,1962,5,121,0,0,1962,1963,5,146,0, - 0,1963,1971,5,122,0,0,1964,1965,5,146,0,0,1965,1966,5,121,0,0,1966,1967, - 5,146,0,0,1967,1968,5,112,0,0,1968,1969,5,146,0,0,1969,1971,5,122,0,0, - 1970,1960,1,0,0,0,1970,1964,1,0,0,0,1971,225,1,0,0,0,1972,1979,3,228, - 114,0,1973,1975,5,146,0,0,1974,1973,1,0,0,0,1974,1975,1,0,0,0,1975,1976, - 1,0,0,0,1976,1978,3,256,128,0,1977,1974,1,0,0,0,1978,1981,1,0,0,0,1979, - 1977,1,0,0,0,1979,1980,1,0,0,0,1980,227,1,0,0,0,1981,1979,1,0,0,0,1982, - 1992,3,230,115,0,1983,1992,3,266,133,0,1984,1992,3,258,129,0,1985,1992, - 3,242,121,0,1986,1992,3,244,122,0,1987,1992,3,250,125,0,1988,1992,3,252, - 126,0,1989,1992,3,254,127,0,1990,1992,3,262,131,0,1991,1982,1,0,0,0,1991, - 1983,1,0,0,0,1991,1984,1,0,0,0,1991,1985,1,0,0,0,1991,1986,1,0,0,0,1991, - 1987,1,0,0,0,1991,1988,1,0,0,0,1991,1989,1,0,0,0,1991,1990,1,0,0,0,1992, - 229,1,0,0,0,1993,2000,3,264,132,0,1994,2000,5,132,0,0,1995,2000,3,232, - 116,0,1996,2000,5,122,0,0,1997,2000,3,234,117,0,1998,2000,3,238,119,0, - 1999,1993,1,0,0,0,1999,1994,1,0,0,0,1999,1995,1,0,0,0,1999,1996,1,0,0, - 0,1999,1997,1,0,0,0,1999,1998,1,0,0,0,2000,231,1,0,0,0,2001,2002,7,6, - 0,0,2002,233,1,0,0,0,2003,2005,5,6,0,0,2004,2006,5,146,0,0,2005,2004, - 1,0,0,0,2005,2006,1,0,0,0,2006,2020,1,0,0,0,2007,2009,3,182,91,0,2008, - 2010,5,146,0,0,2009,2008,1,0,0,0,2009,2010,1,0,0,0,2010,2017,1,0,0,0, - 2011,2013,3,236,118,0,2012,2014,5,146,0,0,2013,2012,1,0,0,0,2013,2014, - 1,0,0,0,2014,2016,1,0,0,0,2015,2011,1,0,0,0,2016,2019,1,0,0,0,2017,2015, - 1,0,0,0,2017,2018,1,0,0,0,2018,2021,1,0,0,0,2019,2017,1,0,0,0,2020,2007, - 1,0,0,0,2020,2021,1,0,0,0,2021,2022,1,0,0,0,2022,2023,5,7,0,0,2023,235, - 1,0,0,0,2024,2026,5,4,0,0,2025,2027,5,146,0,0,2026,2025,1,0,0,0,2026, - 2027,1,0,0,0,2027,2029,1,0,0,0,2028,2030,3,182,91,0,2029,2028,1,0,0,0, - 2029,2030,1,0,0,0,2030,237,1,0,0,0,2031,2033,5,8,0,0,2032,2034,5,146, - 0,0,2033,2032,1,0,0,0,2033,2034,1,0,0,0,2034,2035,1,0,0,0,2035,2037,3, - 240,120,0,2036,2038,5,146,0,0,2037,2036,1,0,0,0,2037,2038,1,0,0,0,2038, - 2049,1,0,0,0,2039,2041,5,4,0,0,2040,2042,5,146,0,0,2041,2040,1,0,0,0, - 2041,2042,1,0,0,0,2042,2043,1,0,0,0,2043,2045,3,240,120,0,2044,2046,5, - 146,0,0,2045,2044,1,0,0,0,2045,2046,1,0,0,0,2046,2048,1,0,0,0,2047,2039, - 1,0,0,0,2048,2051,1,0,0,0,2049,2047,1,0,0,0,2049,2050,1,0,0,0,2050,2052, - 1,0,0,0,2051,2049,1,0,0,0,2052,2053,5,9,0,0,2053,239,1,0,0,0,2054,2057, - 3,278,139,0,2055,2057,5,132,0,0,2056,2054,1,0,0,0,2056,2055,1,0,0,0,2057, - 2059,1,0,0,0,2058,2060,5,146,0,0,2059,2058,1,0,0,0,2059,2060,1,0,0,0, - 2060,2061,1,0,0,0,2061,2063,5,116,0,0,2062,2064,5,146,0,0,2063,2062,1, - 0,0,0,2063,2064,1,0,0,0,2064,2065,1,0,0,0,2065,2066,3,182,91,0,2066,241, - 1,0,0,0,2067,2069,5,2,0,0,2068,2070,5,146,0,0,2069,2068,1,0,0,0,2069, - 2070,1,0,0,0,2070,2071,1,0,0,0,2071,2073,3,182,91,0,2072,2074,5,146,0, - 0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075,2076,5,3, - 0,0,2076,243,1,0,0,0,2077,2079,5,125,0,0,2078,2080,5,146,0,0,2079,2078, - 1,0,0,0,2079,2080,1,0,0,0,2080,2081,1,0,0,0,2081,2083,5,2,0,0,2082,2084, - 5,146,0,0,2083,2082,1,0,0,0,2083,2084,1,0,0,0,2084,2085,1,0,0,0,2085, - 2087,5,97,0,0,2086,2088,5,146,0,0,2087,2086,1,0,0,0,2087,2088,1,0,0,0, - 2088,2089,1,0,0,0,2089,2126,5,3,0,0,2090,2092,3,246,123,0,2091,2093,5, - 146,0,0,2092,2091,1,0,0,0,2092,2093,1,0,0,0,2093,2094,1,0,0,0,2094,2096, - 5,2,0,0,2095,2097,5,146,0,0,2096,2095,1,0,0,0,2096,2097,1,0,0,0,2097, - 2102,1,0,0,0,2098,2100,5,96,0,0,2099,2101,5,146,0,0,2100,2099,1,0,0,0, - 2100,2101,1,0,0,0,2101,2103,1,0,0,0,2102,2098,1,0,0,0,2102,2103,1,0,0, - 0,2103,2121,1,0,0,0,2104,2106,3,248,124,0,2105,2107,5,146,0,0,2106,2105, - 1,0,0,0,2106,2107,1,0,0,0,2107,2118,1,0,0,0,2108,2110,5,4,0,0,2109,2111, - 5,146,0,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2112,1,0,0,0,2112, - 2114,3,248,124,0,2113,2115,5,146,0,0,2114,2113,1,0,0,0,2114,2115,1,0, - 0,0,2115,2117,1,0,0,0,2116,2108,1,0,0,0,2117,2120,1,0,0,0,2118,2116,1, - 0,0,0,2118,2119,1,0,0,0,2119,2122,1,0,0,0,2120,2118,1,0,0,0,2121,2104, - 1,0,0,0,2121,2122,1,0,0,0,2122,2123,1,0,0,0,2123,2124,5,3,0,0,2124,2126, - 1,0,0,0,2125,2077,1,0,0,0,2125,2090,1,0,0,0,2126,245,1,0,0,0,2127,2128, - 3,278,139,0,2128,247,1,0,0,0,2129,2131,3,278,139,0,2130,2132,5,146,0, - 0,2131,2130,1,0,0,0,2131,2132,1,0,0,0,2132,2133,1,0,0,0,2133,2134,5,116, - 0,0,2134,2136,5,5,0,0,2135,2137,5,146,0,0,2136,2135,1,0,0,0,2136,2137, - 1,0,0,0,2137,2139,1,0,0,0,2138,2129,1,0,0,0,2138,2139,1,0,0,0,2139,2140, - 1,0,0,0,2140,2141,3,182,91,0,2141,249,1,0,0,0,2142,2147,3,150,75,0,2143, - 2145,5,146,0,0,2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145,2146,1,0,0,0, - 2146,2148,3,152,76,0,2147,2144,1,0,0,0,2148,2149,1,0,0,0,2149,2147,1, - 0,0,0,2149,2150,1,0,0,0,2150,251,1,0,0,0,2151,2153,5,126,0,0,2152,2154, - 5,146,0,0,2153,2152,1,0,0,0,2153,2154,1,0,0,0,2154,2155,1,0,0,0,2155, - 2157,5,8,0,0,2156,2158,5,146,0,0,2157,2156,1,0,0,0,2157,2158,1,0,0,0, - 2158,2159,1,0,0,0,2159,2161,5,86,0,0,2160,2162,5,146,0,0,2161,2160,1, - 0,0,0,2161,2162,1,0,0,0,2162,2163,1,0,0,0,2163,2168,3,142,71,0,2164,2166, - 5,146,0,0,2165,2164,1,0,0,0,2165,2166,1,0,0,0,2166,2167,1,0,0,0,2167, - 2169,3,140,70,0,2168,2165,1,0,0,0,2168,2169,1,0,0,0,2169,2171,1,0,0,0, - 2170,2172,5,146,0,0,2171,2170,1,0,0,0,2171,2172,1,0,0,0,2172,2173,1,0, - 0,0,2173,2174,5,9,0,0,2174,253,1,0,0,0,2175,2177,5,125,0,0,2176,2178, - 5,146,0,0,2177,2176,1,0,0,0,2177,2178,1,0,0,0,2178,2179,1,0,0,0,2179, - 2181,5,8,0,0,2180,2182,5,146,0,0,2181,2180,1,0,0,0,2181,2182,1,0,0,0, - 2182,2183,1,0,0,0,2183,2185,5,86,0,0,2184,2186,5,146,0,0,2185,2184,1, - 0,0,0,2185,2186,1,0,0,0,2186,2187,1,0,0,0,2187,2192,3,142,71,0,2188,2190, - 5,146,0,0,2189,2188,1,0,0,0,2189,2190,1,0,0,0,2190,2191,1,0,0,0,2191, - 2193,3,140,70,0,2192,2189,1,0,0,0,2192,2193,1,0,0,0,2193,2195,1,0,0,0, - 2194,2196,5,146,0,0,2195,2194,1,0,0,0,2195,2196,1,0,0,0,2196,2197,1,0, - 0,0,2197,2198,5,9,0,0,2198,255,1,0,0,0,2199,2201,5,25,0,0,2200,2202,5, - 146,0,0,2201,2200,1,0,0,0,2201,2202,1,0,0,0,2202,2205,1,0,0,0,2203,2206, - 3,270,135,0,2204,2206,5,97,0,0,2205,2203,1,0,0,0,2205,2204,1,0,0,0,2206, - 257,1,0,0,0,2207,2212,5,127,0,0,2208,2210,5,146,0,0,2209,2208,1,0,0,0, - 2209,2210,1,0,0,0,2210,2211,1,0,0,0,2211,2213,3,260,130,0,2212,2209,1, - 0,0,0,2213,2214,1,0,0,0,2214,2212,1,0,0,0,2214,2215,1,0,0,0,2215,2230, - 1,0,0,0,2216,2218,5,127,0,0,2217,2219,5,146,0,0,2218,2217,1,0,0,0,2218, - 2219,1,0,0,0,2219,2220,1,0,0,0,2220,2225,3,182,91,0,2221,2223,5,146,0, - 0,2222,2221,1,0,0,0,2222,2223,1,0,0,0,2223,2224,1,0,0,0,2224,2226,3,260, - 130,0,2225,2222,1,0,0,0,2226,2227,1,0,0,0,2227,2225,1,0,0,0,2227,2228, - 1,0,0,0,2228,2230,1,0,0,0,2229,2207,1,0,0,0,2229,2216,1,0,0,0,2230,2239, - 1,0,0,0,2231,2233,5,146,0,0,2232,2231,1,0,0,0,2232,2233,1,0,0,0,2233, - 2234,1,0,0,0,2234,2236,5,128,0,0,2235,2237,5,146,0,0,2236,2235,1,0,0, - 0,2236,2237,1,0,0,0,2237,2238,1,0,0,0,2238,2240,3,182,91,0,2239,2232, - 1,0,0,0,2239,2240,1,0,0,0,2240,2242,1,0,0,0,2241,2243,5,146,0,0,2242, - 2241,1,0,0,0,2242,2243,1,0,0,0,2243,2244,1,0,0,0,2244,2245,5,129,0,0, - 2245,259,1,0,0,0,2246,2248,5,130,0,0,2247,2249,5,146,0,0,2248,2247,1, - 0,0,0,2248,2249,1,0,0,0,2249,2250,1,0,0,0,2250,2252,3,182,91,0,2251,2253, - 5,146,0,0,2252,2251,1,0,0,0,2252,2253,1,0,0,0,2253,2254,1,0,0,0,2254, - 2256,5,131,0,0,2255,2257,5,146,0,0,2256,2255,1,0,0,0,2256,2257,1,0,0, - 0,2257,2258,1,0,0,0,2258,2259,3,182,91,0,2259,261,1,0,0,0,2260,2261,3, - 278,139,0,2261,263,1,0,0,0,2262,2265,3,274,137,0,2263,2265,3,272,136, - 0,2264,2262,1,0,0,0,2264,2263,1,0,0,0,2265,265,1,0,0,0,2266,2269,5,26, - 0,0,2267,2270,3,278,139,0,2268,2270,5,134,0,0,2269,2267,1,0,0,0,2269, - 2268,1,0,0,0,2270,267,1,0,0,0,2271,2273,3,228,114,0,2272,2274,5,146,0, - 0,2273,2272,1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,0,0,2275,2276,3,256, - 128,0,2276,269,1,0,0,0,2277,2278,3,276,138,0,2278,271,1,0,0,0,2279,2280, - 5,134,0,0,2280,273,1,0,0,0,2281,2282,5,141,0,0,2282,275,1,0,0,0,2283, - 2284,3,278,139,0,2284,277,1,0,0,0,2285,2291,5,142,0,0,2286,2287,5,145, - 0,0,2287,2291,6,139,-1,0,2288,2291,5,135,0,0,2289,2291,3,280,140,0,2290, - 2285,1,0,0,0,2290,2286,1,0,0,0,2290,2288,1,0,0,0,2290,2289,1,0,0,0,2291, - 279,1,0,0,0,2292,2293,7,7,0,0,2293,281,1,0,0,0,2294,2295,7,8,0,0,2295, - 283,1,0,0,0,2296,2297,7,9,0,0,2297,285,1,0,0,0,2298,2299,7,10,0,0,2299, - 287,1,0,0,0,401,290,294,299,303,308,311,315,318,331,337,341,345,349,352, - 358,361,365,369,373,377,381,386,397,401,405,410,423,427,435,439,443,447, - 455,459,463,467,473,477,499,503,506,509,512,515,519,524,528,538,542,547, - 552,557,563,567,571,576,583,587,591,594,598,602,607,612,616,626,636,640, - 644,648,653,665,669,673,677,681,683,687,691,693,707,711,715,719,724,727, - 731,735,737,741,745,747,783,794,816,820,825,836,840,844,852,856,860,866, - 870,874,880,884,888,892,896,900,906,913,918,924,944,948,956,966,971,976, - 980,985,991,996,999,1003,1007,1011,1017,1021,1026,1031,1035,1038,1042, - 1046,1050,1054,1058,1064,1068,1073,1077,1086,1092,1100,1104,1108,1112, - 1119,1123,1127,1131,1134,1137,1140,1146,1149,1153,1157,1161,1164,1168, - 1178,1184,1191,1204,1208,1212,1216,1221,1226,1230,1236,1240,1244,1248, - 1253,1259,1262,1268,1271,1277,1281,1285,1289,1293,1298,1303,1307,1312, - 1315,1324,1333,1338,1351,1354,1362,1366,1371,1376,1380,1385,1391,1396, - 1403,1407,1411,1413,1417,1419,1423,1425,1431,1437,1441,1444,1447,1453, - 1456,1459,1463,1469,1472,1475,1479,1483,1487,1489,1493,1495,1499,1501, - 1505,1507,1513,1517,1521,1525,1529,1533,1537,1541,1545,1548,1554,1558, - 1562,1565,1570,1575,1580,1585,1591,1597,1600,1603,1606,1610,1613,1616, - 1619,1622,1626,1630,1634,1638,1642,1645,1648,1652,1656,1660,1664,1666, - 1672,1675,1678,1684,1687,1690,1711,1721,1731,1736,1740,1747,1751,1755, - 1759,1763,1771,1775,1779,1783,1789,1793,1799,1803,1808,1813,1817,1822, - 1827,1831,1837,1844,1848,1854,1861,1865,1871,1878,1882,1887,1892,1896, - 1901,1904,1911,1914,1919,1928,1932,1935,1948,1951,1956,1970,1974,1979, - 1991,1999,2005,2009,2013,2017,2020,2026,2029,2033,2037,2041,2045,2049, - 2056,2059,2063,2069,2073,2079,2083,2087,2092,2096,2100,2102,2106,2110, - 2114,2118,2121,2125,2131,2136,2138,2144,2149,2153,2157,2161,2165,2168, - 2171,2177,2181,2185,2189,2192,2195,2201,2205,2209,2214,2218,2222,2227, - 2229,2232,2236,2239,2242,2248,2252,2256,2264,2269,2273,2290 + 278,280,282,284,286,288,0,11,2,0,57,57,59,59,1,0,104,107,2,0,5,5,12,16, + 1,0,18,19,2,0,20,20,115,115,2,0,21,22,98,98,1,0,124,125,7,0,47,47,53, + 56,67,67,71,71,118,118,126,126,130,130,2,0,13,13,27,30,2,0,15,15,31,34, + 2,0,35,45,115,115,2615,0,290,1,0,0,0,2,310,1,0,0,0,4,334,1,0,0,0,6,336, + 1,0,0,0,8,378,1,0,0,0,10,392,1,0,0,0,12,422,1,0,0,0,14,452,1,0,0,0,16, + 472,1,0,0,0,18,478,1,0,0,0,20,490,1,0,0,0,22,502,1,0,0,0,24,545,1,0,0, + 0,26,559,1,0,0,0,28,603,1,0,0,0,30,605,1,0,0,0,32,619,1,0,0,0,34,635, + 1,0,0,0,36,637,1,0,0,0,38,666,1,0,0,0,40,706,1,0,0,0,42,760,1,0,0,0,44, + 768,1,0,0,0,46,774,1,0,0,0,48,780,1,0,0,0,50,792,1,0,0,0,52,794,1,0,0, + 0,54,805,1,0,0,0,56,809,1,0,0,0,58,815,1,0,0,0,60,823,1,0,0,0,62,837, + 1,0,0,0,64,841,1,0,0,0,66,909,1,0,0,0,68,918,1,0,0,0,70,925,1,0,0,0,72, + 933,1,0,0,0,74,935,1,0,0,0,76,937,1,0,0,0,78,953,1,0,0,0,80,957,1,0,0, + 0,82,959,1,0,0,0,84,967,1,0,0,0,86,971,1,0,0,0,88,994,1,0,0,0,90,1008, + 1,0,0,0,92,1012,1,0,0,0,94,1059,1,0,0,0,96,1065,1,0,0,0,98,1077,1,0,0, + 0,100,1095,1,0,0,0,102,1101,1,0,0,0,104,1103,1,0,0,0,106,1151,1,0,0,0, + 108,1162,1,0,0,0,110,1175,1,0,0,0,112,1185,1,0,0,0,114,1191,1,0,0,0,116, + 1213,1,0,0,0,118,1215,1,0,0,0,120,1233,1,0,0,0,122,1245,1,0,0,0,124,1265, + 1,0,0,0,126,1273,1,0,0,0,128,1280,1,0,0,0,130,1324,1,0,0,0,132,1333,1, + 0,0,0,134,1335,1,0,0,0,136,1350,1,0,0,0,138,1354,1,0,0,0,140,1358,1,0, + 0,0,142,1365,1,0,0,0,144,1369,1,0,0,0,146,1394,1,0,0,0,148,1396,1,0,0, + 0,150,1412,1,0,0,0,152,1414,1,0,0,0,154,1438,1,0,0,0,156,1488,1,0,0,0, + 158,1490,1,0,0,0,160,1520,1,0,0,0,162,1561,1,0,0,0,164,1582,1,0,0,0,166, + 1592,1,0,0,0,168,1598,1,0,0,0,170,1633,1,0,0,0,172,1679,1,0,0,0,174,1691, + 1,0,0,0,176,1703,1,0,0,0,178,1705,1,0,0,0,180,1707,1,0,0,0,182,1709,1, + 0,0,0,184,1711,1,0,0,0,186,1713,1,0,0,0,188,1723,1,0,0,0,190,1733,1,0, + 0,0,192,1749,1,0,0,0,194,1802,1,0,0,0,196,1804,1,0,0,0,198,1806,1,0,0, + 0,200,1820,1,0,0,0,202,1834,1,0,0,0,204,1849,1,0,0,0,206,1851,1,0,0,0, + 208,1866,1,0,0,0,210,1868,1,0,0,0,212,1883,1,0,0,0,214,1885,1,0,0,0,216, + 1905,1,0,0,0,218,1915,1,0,0,0,220,1944,1,0,0,0,222,1957,1,0,0,0,224,1965, + 1,0,0,0,226,1979,1,0,0,0,228,1981,1,0,0,0,230,2000,1,0,0,0,232,2008,1, + 0,0,0,234,2010,1,0,0,0,236,2012,1,0,0,0,238,2033,1,0,0,0,240,2040,1,0, + 0,0,242,2065,1,0,0,0,244,2076,1,0,0,0,246,2134,1,0,0,0,248,2136,1,0,0, + 0,250,2147,1,0,0,0,252,2151,1,0,0,0,254,2160,1,0,0,0,256,2184,1,0,0,0, + 258,2208,1,0,0,0,260,2238,1,0,0,0,262,2255,1,0,0,0,264,2269,1,0,0,0,266, + 2273,1,0,0,0,268,2275,1,0,0,0,270,2280,1,0,0,0,272,2286,1,0,0,0,274,2288, + 1,0,0,0,276,2290,1,0,0,0,278,2292,1,0,0,0,280,2299,1,0,0,0,282,2301,1, + 0,0,0,284,2303,1,0,0,0,286,2305,1,0,0,0,288,2307,1,0,0,0,290,301,3,2, + 1,0,291,293,5,147,0,0,292,291,1,0,0,0,292,293,1,0,0,0,293,294,1,0,0,0, + 294,296,5,1,0,0,295,297,5,147,0,0,296,295,1,0,0,0,296,297,1,0,0,0,297, + 298,1,0,0,0,298,300,3,2,1,0,299,292,1,0,0,0,300,303,1,0,0,0,301,299,1, + 0,0,0,301,302,1,0,0,0,302,305,1,0,0,0,303,301,1,0,0,0,304,306,5,147,0, + 0,305,304,1,0,0,0,305,306,1,0,0,0,306,307,1,0,0,0,307,308,5,0,0,1,308, + 1,1,0,0,0,309,311,3,72,36,0,310,309,1,0,0,0,310,311,1,0,0,0,311,313,1, + 0,0,0,312,314,5,147,0,0,313,312,1,0,0,0,313,314,1,0,0,0,314,315,1,0,0, + 0,315,320,3,4,2,0,316,318,5,147,0,0,317,316,1,0,0,0,317,318,1,0,0,0,318, + 319,1,0,0,0,319,321,5,1,0,0,320,317,1,0,0,0,320,321,1,0,0,0,321,3,1,0, + 0,0,322,335,3,86,43,0,323,335,3,34,17,0,324,335,3,6,3,0,325,335,3,10, + 5,0,326,335,3,12,6,0,327,335,3,18,9,0,328,335,3,22,11,0,329,335,3,20, + 10,0,330,335,3,78,39,0,331,335,3,80,40,0,332,335,3,14,7,0,333,335,3,16, + 8,0,334,322,1,0,0,0,334,323,1,0,0,0,334,324,1,0,0,0,334,325,1,0,0,0,334, + 326,1,0,0,0,334,327,1,0,0,0,334,328,1,0,0,0,334,329,1,0,0,0,334,330,1, + 0,0,0,334,331,1,0,0,0,334,332,1,0,0,0,334,333,1,0,0,0,335,5,1,0,0,0,336, + 337,5,50,0,0,337,338,5,147,0,0,338,355,3,278,139,0,339,341,5,147,0,0, + 340,339,1,0,0,0,340,341,1,0,0,0,341,342,1,0,0,0,342,344,5,2,0,0,343,345, + 5,147,0,0,344,343,1,0,0,0,344,345,1,0,0,0,345,346,1,0,0,0,346,348,3,8, + 4,0,347,349,5,147,0,0,348,347,1,0,0,0,348,349,1,0,0,0,349,350,1,0,0,0, + 350,352,5,3,0,0,351,353,5,147,0,0,352,351,1,0,0,0,352,353,1,0,0,0,353, + 356,1,0,0,0,354,356,5,147,0,0,355,340,1,0,0,0,355,354,1,0,0,0,356,357, + 1,0,0,0,357,358,5,51,0,0,358,361,5,147,0,0,359,362,3,28,14,0,360,362, + 3,264,132,0,361,359,1,0,0,0,361,360,1,0,0,0,362,376,1,0,0,0,363,365,5, + 147,0,0,364,363,1,0,0,0,364,365,1,0,0,0,365,366,1,0,0,0,366,368,5,2,0, + 0,367,369,5,147,0,0,368,367,1,0,0,0,368,369,1,0,0,0,369,370,1,0,0,0,370, + 372,3,30,15,0,371,373,5,147,0,0,372,371,1,0,0,0,372,373,1,0,0,0,373,374, + 1,0,0,0,374,375,5,3,0,0,375,377,1,0,0,0,376,364,1,0,0,0,376,377,1,0,0, + 0,377,7,1,0,0,0,378,389,3,278,139,0,379,381,5,147,0,0,380,379,1,0,0,0, + 380,381,1,0,0,0,381,382,1,0,0,0,382,384,5,4,0,0,383,385,5,147,0,0,384, + 383,1,0,0,0,384,385,1,0,0,0,385,386,1,0,0,0,386,388,3,278,139,0,387,380, + 1,0,0,0,388,391,1,0,0,0,389,387,1,0,0,0,389,390,1,0,0,0,390,9,1,0,0,0, + 391,389,1,0,0,0,392,393,5,50,0,0,393,394,5,147,0,0,394,395,3,278,139, + 0,395,396,5,147,0,0,396,397,5,51,0,0,397,398,5,147,0,0,398,400,5,2,0, + 0,399,401,5,147,0,0,400,399,1,0,0,0,400,401,1,0,0,0,401,402,1,0,0,0,402, + 413,5,133,0,0,403,405,5,147,0,0,404,403,1,0,0,0,404,405,1,0,0,0,405,406, + 1,0,0,0,406,408,5,4,0,0,407,409,5,147,0,0,408,407,1,0,0,0,408,409,1,0, + 0,0,409,410,1,0,0,0,410,412,5,133,0,0,411,404,1,0,0,0,412,415,1,0,0,0, + 413,411,1,0,0,0,413,414,1,0,0,0,414,416,1,0,0,0,415,413,1,0,0,0,416,417, + 5,3,0,0,417,418,5,147,0,0,418,419,5,101,0,0,419,420,5,147,0,0,420,421, + 5,52,0,0,421,11,1,0,0,0,422,423,5,50,0,0,423,424,5,147,0,0,424,426,5, + 2,0,0,425,427,5,147,0,0,426,425,1,0,0,0,426,427,1,0,0,0,427,428,1,0,0, + 0,428,430,3,86,43,0,429,431,5,147,0,0,430,429,1,0,0,0,430,431,1,0,0,0, + 431,432,1,0,0,0,432,433,5,3,0,0,433,434,5,147,0,0,434,435,5,68,0,0,435, + 436,5,147,0,0,436,450,5,133,0,0,437,439,5,147,0,0,438,437,1,0,0,0,438, + 439,1,0,0,0,439,440,1,0,0,0,440,442,5,2,0,0,441,443,5,147,0,0,442,441, + 1,0,0,0,442,443,1,0,0,0,443,444,1,0,0,0,444,446,3,30,15,0,445,447,5,147, + 0,0,446,445,1,0,0,0,446,447,1,0,0,0,447,448,1,0,0,0,448,449,5,3,0,0,449, + 451,1,0,0,0,450,438,1,0,0,0,450,451,1,0,0,0,451,13,1,0,0,0,452,453,5, + 53,0,0,453,454,5,147,0,0,454,455,5,55,0,0,455,456,5,147,0,0,456,470,5, + 133,0,0,457,459,5,147,0,0,458,457,1,0,0,0,458,459,1,0,0,0,459,460,1,0, + 0,0,460,462,5,2,0,0,461,463,5,147,0,0,462,461,1,0,0,0,462,463,1,0,0,0, + 463,464,1,0,0,0,464,466,3,30,15,0,465,467,5,147,0,0,466,465,1,0,0,0,466, + 467,1,0,0,0,467,468,1,0,0,0,468,469,5,3,0,0,469,471,1,0,0,0,470,458,1, + 0,0,0,470,471,1,0,0,0,471,15,1,0,0,0,472,473,5,54,0,0,473,474,5,147,0, + 0,474,475,5,55,0,0,475,476,5,147,0,0,476,477,5,133,0,0,477,17,1,0,0,0, + 478,479,5,46,0,0,479,480,5,147,0,0,480,482,3,280,140,0,481,483,5,147, + 0,0,482,481,1,0,0,0,482,483,1,0,0,0,483,484,1,0,0,0,484,486,5,5,0,0,485, + 487,5,147,0,0,486,485,1,0,0,0,486,487,1,0,0,0,487,488,1,0,0,0,488,489, + 3,232,116,0,489,19,1,0,0,0,490,491,5,47,0,0,491,492,5,147,0,0,492,493, + 5,91,0,0,493,494,5,147,0,0,494,495,5,57,0,0,495,496,5,147,0,0,496,497, + 3,278,139,0,497,498,5,147,0,0,498,499,5,122,0,0,499,500,5,147,0,0,500, + 501,5,133,0,0,501,21,1,0,0,0,502,503,5,89,0,0,503,504,5,147,0,0,504,505, + 5,48,0,0,505,506,5,147,0,0,506,508,3,248,124,0,507,509,5,147,0,0,508, + 507,1,0,0,0,508,509,1,0,0,0,509,510,1,0,0,0,510,512,5,2,0,0,511,513,5, + 147,0,0,512,511,1,0,0,0,512,513,1,0,0,0,513,515,1,0,0,0,514,516,3,24, + 12,0,515,514,1,0,0,0,515,516,1,0,0,0,516,518,1,0,0,0,517,519,5,147,0, + 0,518,517,1,0,0,0,518,519,1,0,0,0,519,521,1,0,0,0,520,522,3,26,13,0,521, + 520,1,0,0,0,521,522,1,0,0,0,522,533,1,0,0,0,523,525,5,147,0,0,524,523, + 1,0,0,0,524,525,1,0,0,0,525,526,1,0,0,0,526,528,5,4,0,0,527,529,5,147, + 0,0,528,527,1,0,0,0,528,529,1,0,0,0,529,530,1,0,0,0,530,532,3,26,13,0, + 531,524,1,0,0,0,532,535,1,0,0,0,533,531,1,0,0,0,533,534,1,0,0,0,534,537, + 1,0,0,0,535,533,1,0,0,0,536,538,5,147,0,0,537,536,1,0,0,0,537,538,1,0, + 0,0,538,539,1,0,0,0,539,540,5,3,0,0,540,541,5,147,0,0,541,542,5,99,0, + 0,542,543,5,147,0,0,543,544,3,184,92,0,544,23,1,0,0,0,545,556,3,280,140, + 0,546,548,5,147,0,0,547,546,1,0,0,0,547,548,1,0,0,0,548,549,1,0,0,0,549, + 551,5,4,0,0,550,552,5,147,0,0,551,550,1,0,0,0,551,552,1,0,0,0,552,553, + 1,0,0,0,553,555,3,280,140,0,554,547,1,0,0,0,555,558,1,0,0,0,556,554,1, + 0,0,0,556,557,1,0,0,0,557,25,1,0,0,0,558,556,1,0,0,0,559,561,3,280,140, + 0,560,562,5,147,0,0,561,560,1,0,0,0,561,562,1,0,0,0,562,563,1,0,0,0,563, + 564,5,117,0,0,564,566,5,5,0,0,565,567,5,147,0,0,566,565,1,0,0,0,566,567, + 1,0,0,0,567,568,1,0,0,0,568,569,3,232,116,0,569,27,1,0,0,0,570,572,5, + 6,0,0,571,573,5,147,0,0,572,571,1,0,0,0,572,573,1,0,0,0,573,574,1,0,0, + 0,574,585,5,133,0,0,575,577,5,147,0,0,576,575,1,0,0,0,576,577,1,0,0,0, + 577,578,1,0,0,0,578,580,5,4,0,0,579,581,5,147,0,0,580,579,1,0,0,0,580, + 581,1,0,0,0,581,582,1,0,0,0,582,584,5,133,0,0,583,576,1,0,0,0,584,587, + 1,0,0,0,585,583,1,0,0,0,585,586,1,0,0,0,586,588,1,0,0,0,587,585,1,0,0, + 0,588,604,5,7,0,0,589,604,5,133,0,0,590,592,5,49,0,0,591,593,5,147,0, + 0,592,591,1,0,0,0,592,593,1,0,0,0,593,594,1,0,0,0,594,596,5,2,0,0,595, + 597,5,147,0,0,596,595,1,0,0,0,596,597,1,0,0,0,597,598,1,0,0,0,598,600, + 5,133,0,0,599,601,5,147,0,0,600,599,1,0,0,0,600,601,1,0,0,0,601,602,1, + 0,0,0,602,604,5,3,0,0,603,570,1,0,0,0,603,589,1,0,0,0,603,590,1,0,0,0, + 604,29,1,0,0,0,605,616,3,32,16,0,606,608,5,147,0,0,607,606,1,0,0,0,607, + 608,1,0,0,0,608,609,1,0,0,0,609,611,5,4,0,0,610,612,5,147,0,0,611,610, + 1,0,0,0,611,612,1,0,0,0,612,613,1,0,0,0,613,615,3,32,16,0,614,607,1,0, + 0,0,615,618,1,0,0,0,616,614,1,0,0,0,616,617,1,0,0,0,617,31,1,0,0,0,618, + 616,1,0,0,0,619,621,3,280,140,0,620,622,5,147,0,0,621,620,1,0,0,0,621, + 622,1,0,0,0,622,623,1,0,0,0,623,625,5,5,0,0,624,626,5,147,0,0,625,624, + 1,0,0,0,625,626,1,0,0,0,626,627,1,0,0,0,627,628,3,232,116,0,628,33,1, + 0,0,0,629,636,3,36,18,0,630,636,3,38,19,0,631,636,3,40,20,0,632,636,3, + 44,22,0,633,636,3,46,23,0,634,636,3,48,24,0,635,629,1,0,0,0,635,630,1, + 0,0,0,635,631,1,0,0,0,635,632,1,0,0,0,635,633,1,0,0,0,635,634,1,0,0,0, + 636,35,1,0,0,0,637,638,5,89,0,0,638,639,5,147,0,0,639,640,5,56,0,0,640, + 641,5,147,0,0,641,642,5,57,0,0,642,643,5,147,0,0,643,645,3,278,139,0, + 644,646,5,147,0,0,645,644,1,0,0,0,645,646,1,0,0,0,646,647,1,0,0,0,647, + 649,5,2,0,0,648,650,5,147,0,0,649,648,1,0,0,0,649,650,1,0,0,0,650,651, + 1,0,0,0,651,653,3,60,30,0,652,654,5,147,0,0,653,652,1,0,0,0,653,654,1, + 0,0,0,654,655,1,0,0,0,655,657,5,4,0,0,656,658,5,147,0,0,657,656,1,0,0, + 0,657,658,1,0,0,0,658,659,1,0,0,0,659,660,3,64,32,0,660,662,1,0,0,0,661, + 663,5,147,0,0,662,661,1,0,0,0,662,663,1,0,0,0,663,664,1,0,0,0,664,665, + 5,3,0,0,665,37,1,0,0,0,666,667,5,89,0,0,667,668,5,147,0,0,668,669,5,67, + 0,0,669,670,5,147,0,0,670,671,5,57,0,0,671,672,5,147,0,0,672,674,3,278, + 139,0,673,675,5,147,0,0,674,673,1,0,0,0,674,675,1,0,0,0,675,676,1,0,0, + 0,676,678,5,2,0,0,677,679,5,147,0,0,678,677,1,0,0,0,678,679,1,0,0,0,679, + 680,1,0,0,0,680,682,3,42,21,0,681,683,5,147,0,0,682,681,1,0,0,0,682,683, + 1,0,0,0,683,692,1,0,0,0,684,686,5,4,0,0,685,687,5,147,0,0,686,685,1,0, + 0,0,686,687,1,0,0,0,687,688,1,0,0,0,688,690,3,60,30,0,689,691,5,147,0, + 0,690,689,1,0,0,0,690,691,1,0,0,0,691,693,1,0,0,0,692,684,1,0,0,0,692, + 693,1,0,0,0,693,702,1,0,0,0,694,696,5,4,0,0,695,697,5,147,0,0,696,695, + 1,0,0,0,696,697,1,0,0,0,697,698,1,0,0,0,698,700,3,280,140,0,699,701,5, + 147,0,0,700,699,1,0,0,0,700,701,1,0,0,0,701,703,1,0,0,0,702,694,1,0,0, + 0,702,703,1,0,0,0,703,704,1,0,0,0,704,705,5,3,0,0,705,39,1,0,0,0,706, + 707,5,89,0,0,707,708,5,147,0,0,708,709,5,67,0,0,709,710,5,147,0,0,710, + 711,5,57,0,0,711,712,5,147,0,0,712,713,5,58,0,0,713,714,5,147,0,0,714, + 716,3,278,139,0,715,717,5,147,0,0,716,715,1,0,0,0,716,717,1,0,0,0,717, + 718,1,0,0,0,718,720,5,2,0,0,719,721,5,147,0,0,720,719,1,0,0,0,720,721, + 1,0,0,0,721,722,1,0,0,0,722,724,3,42,21,0,723,725,5,147,0,0,724,723,1, + 0,0,0,724,725,1,0,0,0,725,731,1,0,0,0,726,728,5,4,0,0,727,729,5,147,0, + 0,728,727,1,0,0,0,728,729,1,0,0,0,729,730,1,0,0,0,730,732,3,42,21,0,731, + 726,1,0,0,0,732,733,1,0,0,0,733,731,1,0,0,0,733,734,1,0,0,0,734,736,1, + 0,0,0,735,737,5,147,0,0,736,735,1,0,0,0,736,737,1,0,0,0,737,746,1,0,0, + 0,738,740,5,4,0,0,739,741,5,147,0,0,740,739,1,0,0,0,740,741,1,0,0,0,741, + 742,1,0,0,0,742,744,3,60,30,0,743,745,5,147,0,0,744,743,1,0,0,0,744,745, + 1,0,0,0,745,747,1,0,0,0,746,738,1,0,0,0,746,747,1,0,0,0,747,756,1,0,0, + 0,748,750,5,4,0,0,749,751,5,147,0,0,750,749,1,0,0,0,750,751,1,0,0,0,751, + 752,1,0,0,0,752,754,3,280,140,0,753,755,5,147,0,0,754,753,1,0,0,0,754, + 755,1,0,0,0,755,757,1,0,0,0,756,748,1,0,0,0,756,757,1,0,0,0,757,758,1, + 0,0,0,758,759,5,3,0,0,759,41,1,0,0,0,760,761,5,51,0,0,761,762,5,147,0, + 0,762,763,3,278,139,0,763,764,5,147,0,0,764,765,5,68,0,0,765,766,5,147, + 0,0,766,767,3,278,139,0,767,43,1,0,0,0,768,769,5,89,0,0,769,770,5,147, + 0,0,770,771,5,59,0,0,771,772,5,147,0,0,772,773,3,278,139,0,773,45,1,0, + 0,0,774,775,5,60,0,0,775,776,5,147,0,0,776,777,7,0,0,0,777,778,5,147, + 0,0,778,779,3,278,139,0,779,47,1,0,0,0,780,781,5,61,0,0,781,782,5,147, + 0,0,782,783,5,57,0,0,783,784,5,147,0,0,784,785,3,278,139,0,785,786,5, + 147,0,0,786,787,3,50,25,0,787,49,1,0,0,0,788,793,3,52,26,0,789,793,3, + 54,27,0,790,793,3,56,28,0,791,793,3,58,29,0,792,788,1,0,0,0,792,789,1, + 0,0,0,792,790,1,0,0,0,792,791,1,0,0,0,793,51,1,0,0,0,794,795,5,64,0,0, + 795,796,5,147,0,0,796,797,3,272,136,0,797,798,5,147,0,0,798,803,3,66, + 33,0,799,800,5,147,0,0,800,801,5,62,0,0,801,802,5,147,0,0,802,804,3,184, + 92,0,803,799,1,0,0,0,803,804,1,0,0,0,804,53,1,0,0,0,805,806,5,60,0,0, + 806,807,5,147,0,0,807,808,3,272,136,0,808,55,1,0,0,0,809,810,5,63,0,0, + 810,811,5,147,0,0,811,812,5,68,0,0,812,813,5,147,0,0,813,814,3,278,139, + 0,814,57,1,0,0,0,815,816,5,63,0,0,816,817,5,147,0,0,817,818,3,272,136, + 0,818,819,5,147,0,0,819,820,5,68,0,0,820,821,5,147,0,0,821,822,3,272, + 136,0,822,59,1,0,0,0,823,834,3,62,31,0,824,826,5,147,0,0,825,824,1,0, + 0,0,825,826,1,0,0,0,826,827,1,0,0,0,827,829,5,4,0,0,828,830,5,147,0,0, + 829,828,1,0,0,0,829,830,1,0,0,0,830,831,1,0,0,0,831,833,3,62,31,0,832, + 825,1,0,0,0,833,836,1,0,0,0,834,832,1,0,0,0,834,835,1,0,0,0,835,61,1, + 0,0,0,836,834,1,0,0,0,837,838,3,272,136,0,838,839,5,147,0,0,839,840,3, + 66,33,0,840,63,1,0,0,0,841,842,5,65,0,0,842,843,5,147,0,0,843,845,5,66, + 0,0,844,846,5,147,0,0,845,844,1,0,0,0,845,846,1,0,0,0,846,847,1,0,0,0, + 847,849,5,2,0,0,848,850,5,147,0,0,849,848,1,0,0,0,849,850,1,0,0,0,850, + 851,1,0,0,0,851,853,3,272,136,0,852,854,5,147,0,0,853,852,1,0,0,0,853, + 854,1,0,0,0,854,855,1,0,0,0,855,856,5,3,0,0,856,65,1,0,0,0,857,858,6, + 33,-1,0,858,910,3,280,140,0,859,861,5,82,0,0,860,862,5,147,0,0,861,860, + 1,0,0,0,861,862,1,0,0,0,862,863,1,0,0,0,863,865,5,2,0,0,864,866,5,147, + 0,0,865,864,1,0,0,0,865,866,1,0,0,0,866,867,1,0,0,0,867,869,3,60,30,0, + 868,870,5,147,0,0,869,868,1,0,0,0,869,870,1,0,0,0,870,871,1,0,0,0,871, + 872,5,3,0,0,872,910,1,0,0,0,873,875,3,280,140,0,874,876,5,147,0,0,875, + 874,1,0,0,0,875,876,1,0,0,0,876,877,1,0,0,0,877,879,5,2,0,0,878,880,5, + 147,0,0,879,878,1,0,0,0,879,880,1,0,0,0,880,881,1,0,0,0,881,883,3,60, + 30,0,882,884,5,147,0,0,883,882,1,0,0,0,883,884,1,0,0,0,884,885,1,0,0, + 0,885,886,5,3,0,0,886,910,1,0,0,0,887,889,3,280,140,0,888,890,5,147,0, + 0,889,888,1,0,0,0,889,890,1,0,0,0,890,891,1,0,0,0,891,893,5,2,0,0,892, + 894,5,147,0,0,893,892,1,0,0,0,893,894,1,0,0,0,894,895,1,0,0,0,895,897, + 3,66,33,0,896,898,5,147,0,0,897,896,1,0,0,0,897,898,1,0,0,0,898,899,1, + 0,0,0,899,901,5,4,0,0,900,902,5,147,0,0,901,900,1,0,0,0,901,902,1,0,0, + 0,902,903,1,0,0,0,903,905,3,66,33,0,904,906,5,147,0,0,905,904,1,0,0,0, + 905,906,1,0,0,0,906,907,1,0,0,0,907,908,5,3,0,0,908,910,1,0,0,0,909,857, + 1,0,0,0,909,859,1,0,0,0,909,873,1,0,0,0,909,887,1,0,0,0,910,915,1,0,0, + 0,911,912,10,4,0,0,912,914,3,68,34,0,913,911,1,0,0,0,914,917,1,0,0,0, + 915,913,1,0,0,0,915,916,1,0,0,0,916,67,1,0,0,0,917,915,1,0,0,0,918,922, + 3,70,35,0,919,921,3,70,35,0,920,919,1,0,0,0,921,924,1,0,0,0,922,920,1, + 0,0,0,922,923,1,0,0,0,923,69,1,0,0,0,924,922,1,0,0,0,925,927,5,6,0,0, + 926,928,3,274,137,0,927,926,1,0,0,0,927,928,1,0,0,0,928,929,1,0,0,0,929, + 930,5,7,0,0,930,71,1,0,0,0,931,934,3,74,37,0,932,934,3,76,38,0,933,931, + 1,0,0,0,933,932,1,0,0,0,934,73,1,0,0,0,935,936,5,69,0,0,936,75,1,0,0, + 0,937,938,5,70,0,0,938,77,1,0,0,0,939,940,5,71,0,0,940,941,5,147,0,0, + 941,954,5,72,0,0,942,943,5,71,0,0,943,944,5,147,0,0,944,945,5,72,0,0, + 945,946,5,147,0,0,946,947,5,73,0,0,947,948,5,147,0,0,948,954,5,74,0,0, + 949,954,5,76,0,0,950,954,5,77,0,0,951,954,5,78,0,0,952,954,5,79,0,0,953, + 939,1,0,0,0,953,942,1,0,0,0,953,949,1,0,0,0,953,950,1,0,0,0,953,951,1, + 0,0,0,953,952,1,0,0,0,954,79,1,0,0,0,955,958,3,82,41,0,956,958,3,84,42, + 0,957,955,1,0,0,0,957,956,1,0,0,0,958,81,1,0,0,0,959,960,5,84,0,0,960, + 961,5,147,0,0,961,962,5,81,0,0,962,965,5,147,0,0,963,966,5,133,0,0,964, + 966,3,264,132,0,965,963,1,0,0,0,965,964,1,0,0,0,966,83,1,0,0,0,967,968, + 5,80,0,0,968,969,5,147,0,0,969,970,3,264,132,0,970,85,1,0,0,0,971,972, + 3,88,44,0,972,87,1,0,0,0,973,980,3,92,46,0,974,976,5,147,0,0,975,974, + 1,0,0,0,975,976,1,0,0,0,976,977,1,0,0,0,977,979,3,90,45,0,978,975,1,0, + 0,0,979,982,1,0,0,0,980,978,1,0,0,0,980,981,1,0,0,0,981,995,1,0,0,0,982, + 980,1,0,0,0,983,985,3,126,63,0,984,986,5,147,0,0,985,984,1,0,0,0,985, + 986,1,0,0,0,986,988,1,0,0,0,987,983,1,0,0,0,988,989,1,0,0,0,989,987,1, + 0,0,0,989,990,1,0,0,0,990,991,1,0,0,0,991,992,3,92,46,0,992,993,6,44, + -1,0,993,995,1,0,0,0,994,973,1,0,0,0,994,987,1,0,0,0,995,89,1,0,0,0,996, + 997,5,82,0,0,997,998,5,147,0,0,998,1000,5,83,0,0,999,1001,5,147,0,0,1000, + 999,1,0,0,0,1000,1001,1,0,0,0,1001,1002,1,0,0,0,1002,1009,3,92,46,0,1003, + 1005,5,82,0,0,1004,1006,5,147,0,0,1005,1004,1,0,0,0,1005,1006,1,0,0,0, + 1006,1007,1,0,0,0,1007,1009,3,92,46,0,1008,996,1,0,0,0,1008,1003,1,0, + 0,0,1009,91,1,0,0,0,1010,1013,3,94,47,0,1011,1013,3,96,48,0,1012,1010, + 1,0,0,0,1012,1011,1,0,0,0,1013,93,1,0,0,0,1014,1016,3,102,51,0,1015,1017, + 5,147,0,0,1016,1015,1,0,0,0,1016,1017,1,0,0,0,1017,1019,1,0,0,0,1018, + 1014,1,0,0,0,1019,1022,1,0,0,0,1020,1018,1,0,0,0,1020,1021,1,0,0,0,1021, + 1023,1,0,0,0,1022,1020,1,0,0,0,1023,1060,3,126,63,0,1024,1026,3,102,51, + 0,1025,1027,5,147,0,0,1026,1025,1,0,0,0,1026,1027,1,0,0,0,1027,1029,1, + 0,0,0,1028,1024,1,0,0,0,1029,1032,1,0,0,0,1030,1028,1,0,0,0,1030,1031, + 1,0,0,0,1031,1033,1,0,0,0,1032,1030,1,0,0,0,1033,1040,3,100,50,0,1034, + 1036,5,147,0,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0,1036,1037,1,0,0,0, + 1037,1039,3,100,50,0,1038,1035,1,0,0,0,1039,1042,1,0,0,0,1040,1038,1, + 0,0,0,1040,1041,1,0,0,0,1041,1047,1,0,0,0,1042,1040,1,0,0,0,1043,1045, + 5,147,0,0,1044,1043,1,0,0,0,1044,1045,1,0,0,0,1045,1046,1,0,0,0,1046, + 1048,3,126,63,0,1047,1044,1,0,0,0,1047,1048,1,0,0,0,1048,1060,1,0,0,0, + 1049,1051,3,102,51,0,1050,1052,5,147,0,0,1051,1050,1,0,0,0,1051,1052, + 1,0,0,0,1052,1054,1,0,0,0,1053,1049,1,0,0,0,1054,1055,1,0,0,0,1055,1053, + 1,0,0,0,1055,1056,1,0,0,0,1056,1057,1,0,0,0,1057,1058,6,47,-1,0,1058, + 1060,1,0,0,0,1059,1020,1,0,0,0,1059,1030,1,0,0,0,1059,1053,1,0,0,0,1060, + 95,1,0,0,0,1061,1063,3,98,49,0,1062,1064,5,147,0,0,1063,1062,1,0,0,0, + 1063,1064,1,0,0,0,1064,1066,1,0,0,0,1065,1061,1,0,0,0,1066,1067,1,0,0, + 0,1067,1065,1,0,0,0,1067,1068,1,0,0,0,1068,1069,1,0,0,0,1069,1070,3,94, + 47,0,1070,97,1,0,0,0,1071,1073,3,102,51,0,1072,1074,5,147,0,0,1073,1072, + 1,0,0,0,1073,1074,1,0,0,0,1074,1076,1,0,0,0,1075,1071,1,0,0,0,1076,1079, + 1,0,0,0,1077,1075,1,0,0,0,1077,1078,1,0,0,0,1078,1086,1,0,0,0,1079,1077, + 1,0,0,0,1080,1082,3,100,50,0,1081,1083,5,147,0,0,1082,1081,1,0,0,0,1082, + 1083,1,0,0,0,1083,1085,1,0,0,0,1084,1080,1,0,0,0,1085,1088,1,0,0,0,1086, + 1084,1,0,0,0,1086,1087,1,0,0,0,1087,1089,1,0,0,0,1088,1086,1,0,0,0,1089, + 1090,3,124,62,0,1090,99,1,0,0,0,1091,1096,3,112,56,0,1092,1096,3,114, + 57,0,1093,1096,3,118,59,0,1094,1096,3,122,61,0,1095,1091,1,0,0,0,1095, + 1092,1,0,0,0,1095,1093,1,0,0,0,1095,1094,1,0,0,0,1096,101,1,0,0,0,1097, + 1102,3,108,54,0,1098,1102,3,110,55,0,1099,1102,3,106,53,0,1100,1102,3, + 104,52,0,1101,1097,1,0,0,0,1101,1098,1,0,0,0,1101,1099,1,0,0,0,1101,1100, + 1,0,0,0,1102,103,1,0,0,0,1103,1121,5,84,0,0,1104,1105,5,147,0,0,1105, + 1106,5,95,0,0,1106,1107,5,147,0,0,1107,1109,5,85,0,0,1108,1110,5,147, + 0,0,1109,1108,1,0,0,0,1109,1110,1,0,0,0,1110,1111,1,0,0,0,1111,1113,5, + 2,0,0,1112,1114,5,147,0,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1115, + 1,0,0,0,1115,1117,3,60,30,0,1116,1118,5,147,0,0,1117,1116,1,0,0,0,1117, + 1118,1,0,0,0,1118,1119,1,0,0,0,1119,1120,5,3,0,0,1120,1122,1,0,0,0,1121, + 1104,1,0,0,0,1121,1122,1,0,0,0,1122,1123,1,0,0,0,1123,1124,5,147,0,0, + 1124,1125,5,51,0,0,1125,1143,5,147,0,0,1126,1140,3,28,14,0,1127,1129, + 5,147,0,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1130,1,0,0,0,1130, + 1132,5,2,0,0,1131,1133,5,147,0,0,1132,1131,1,0,0,0,1132,1133,1,0,0,0, + 1133,1134,1,0,0,0,1134,1136,3,30,15,0,1135,1137,5,147,0,0,1136,1135,1, + 0,0,0,1136,1137,1,0,0,0,1137,1138,1,0,0,0,1138,1139,5,3,0,0,1139,1141, + 1,0,0,0,1140,1128,1,0,0,0,1140,1141,1,0,0,0,1141,1144,1,0,0,0,1142,1144, + 3,264,132,0,1143,1126,1,0,0,0,1143,1142,1,0,0,0,1144,1149,1,0,0,0,1145, + 1147,5,147,0,0,1146,1145,1,0,0,0,1146,1147,1,0,0,0,1147,1148,1,0,0,0, + 1148,1150,3,142,71,0,1149,1146,1,0,0,0,1149,1150,1,0,0,0,1150,105,1,0, + 0,0,1151,1152,5,46,0,0,1152,1153,5,147,0,0,1153,1158,3,246,123,0,1154, + 1156,5,147,0,0,1155,1154,1,0,0,0,1155,1156,1,0,0,0,1156,1157,1,0,0,0, + 1157,1159,3,142,71,0,1158,1155,1,0,0,0,1158,1159,1,0,0,0,1159,107,1,0, + 0,0,1160,1161,5,86,0,0,1161,1163,5,147,0,0,1162,1160,1,0,0,0,1162,1163, + 1,0,0,0,1163,1164,1,0,0,0,1164,1166,5,87,0,0,1165,1167,5,147,0,0,1166, + 1165,1,0,0,0,1166,1167,1,0,0,0,1167,1168,1,0,0,0,1168,1173,3,144,72,0, + 1169,1171,5,147,0,0,1170,1169,1,0,0,0,1170,1171,1,0,0,0,1171,1172,1,0, + 0,0,1172,1174,3,142,71,0,1173,1170,1,0,0,0,1173,1174,1,0,0,0,1174,109, + 1,0,0,0,1175,1177,5,88,0,0,1176,1178,5,147,0,0,1177,1176,1,0,0,0,1177, + 1178,1,0,0,0,1178,1179,1,0,0,0,1179,1180,3,184,92,0,1180,1181,5,147,0, + 0,1181,1182,5,99,0,0,1182,1183,5,147,0,0,1183,1184,3,264,132,0,1184,111, + 1,0,0,0,1185,1187,5,89,0,0,1186,1188,5,147,0,0,1187,1186,1,0,0,0,1187, + 1188,1,0,0,0,1188,1189,1,0,0,0,1189,1190,3,144,72,0,1190,113,1,0,0,0, + 1191,1193,5,90,0,0,1192,1194,5,147,0,0,1193,1192,1,0,0,0,1193,1194,1, + 0,0,0,1194,1195,1,0,0,0,1195,1200,3,144,72,0,1196,1197,5,147,0,0,1197, + 1199,3,116,58,0,1198,1196,1,0,0,0,1199,1202,1,0,0,0,1200,1198,1,0,0,0, + 1200,1201,1,0,0,0,1201,115,1,0,0,0,1202,1200,1,0,0,0,1203,1204,5,91,0, + 0,1204,1205,5,147,0,0,1205,1206,5,87,0,0,1206,1207,5,147,0,0,1207,1214, + 3,118,59,0,1208,1209,5,91,0,0,1209,1210,5,147,0,0,1210,1211,5,89,0,0, + 1211,1212,5,147,0,0,1212,1214,3,118,59,0,1213,1203,1,0,0,0,1213,1208, + 1,0,0,0,1214,117,1,0,0,0,1215,1217,5,92,0,0,1216,1218,5,147,0,0,1217, + 1216,1,0,0,0,1217,1218,1,0,0,0,1218,1219,1,0,0,0,1219,1230,3,120,60,0, + 1220,1222,5,147,0,0,1221,1220,1,0,0,0,1221,1222,1,0,0,0,1222,1223,1,0, + 0,0,1223,1225,5,4,0,0,1224,1226,5,147,0,0,1225,1224,1,0,0,0,1225,1226, + 1,0,0,0,1226,1227,1,0,0,0,1227,1229,3,120,60,0,1228,1221,1,0,0,0,1229, + 1232,1,0,0,0,1230,1228,1,0,0,0,1230,1231,1,0,0,0,1231,119,1,0,0,0,1232, + 1230,1,0,0,0,1233,1235,3,270,135,0,1234,1236,5,147,0,0,1235,1234,1,0, + 0,0,1235,1236,1,0,0,0,1236,1237,1,0,0,0,1237,1239,5,5,0,0,1238,1240,5, + 147,0,0,1239,1238,1,0,0,0,1239,1240,1,0,0,0,1240,1241,1,0,0,0,1241,1242, + 3,184,92,0,1242,121,1,0,0,0,1243,1244,5,93,0,0,1244,1246,5,147,0,0,1245, + 1243,1,0,0,0,1245,1246,1,0,0,0,1246,1247,1,0,0,0,1247,1249,5,94,0,0,1248, + 1250,5,147,0,0,1249,1248,1,0,0,0,1249,1250,1,0,0,0,1250,1251,1,0,0,0, + 1251,1262,3,184,92,0,1252,1254,5,147,0,0,1253,1252,1,0,0,0,1253,1254, + 1,0,0,0,1254,1255,1,0,0,0,1255,1257,5,4,0,0,1256,1258,5,147,0,0,1257, + 1256,1,0,0,0,1257,1258,1,0,0,0,1258,1259,1,0,0,0,1259,1261,3,184,92,0, + 1260,1253,1,0,0,0,1261,1264,1,0,0,0,1262,1260,1,0,0,0,1262,1263,1,0,0, + 0,1263,123,1,0,0,0,1264,1262,1,0,0,0,1265,1266,5,95,0,0,1266,1271,3,128, + 64,0,1267,1269,5,147,0,0,1268,1267,1,0,0,0,1268,1269,1,0,0,0,1269,1270, + 1,0,0,0,1270,1272,3,142,71,0,1271,1268,1,0,0,0,1271,1272,1,0,0,0,1272, + 125,1,0,0,0,1273,1274,5,96,0,0,1274,1275,3,128,64,0,1275,127,1,0,0,0, + 1276,1278,5,147,0,0,1277,1276,1,0,0,0,1277,1278,1,0,0,0,1278,1279,1,0, + 0,0,1279,1281,5,97,0,0,1280,1277,1,0,0,0,1280,1281,1,0,0,0,1281,1282, + 1,0,0,0,1282,1283,5,147,0,0,1283,1286,3,130,65,0,1284,1285,5,147,0,0, + 1285,1287,3,134,67,0,1286,1284,1,0,0,0,1286,1287,1,0,0,0,1287,1290,1, + 0,0,0,1288,1289,5,147,0,0,1289,1291,3,136,68,0,1290,1288,1,0,0,0,1290, + 1291,1,0,0,0,1291,1294,1,0,0,0,1292,1293,5,147,0,0,1293,1295,3,138,69, + 0,1294,1292,1,0,0,0,1294,1295,1,0,0,0,1295,129,1,0,0,0,1296,1307,5,98, + 0,0,1297,1299,5,147,0,0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300, + 1,0,0,0,1300,1302,5,4,0,0,1301,1303,5,147,0,0,1302,1301,1,0,0,0,1302, + 1303,1,0,0,0,1303,1304,1,0,0,0,1304,1306,3,132,66,0,1305,1298,1,0,0,0, + 1306,1309,1,0,0,0,1307,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1325,1,0,0, + 0,1309,1307,1,0,0,0,1310,1321,3,132,66,0,1311,1313,5,147,0,0,1312,1311, + 1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0,1314,1316,5,4,0,0,1315,1317, + 5,147,0,0,1316,1315,1,0,0,0,1316,1317,1,0,0,0,1317,1318,1,0,0,0,1318, + 1320,3,132,66,0,1319,1312,1,0,0,0,1320,1323,1,0,0,0,1321,1319,1,0,0,0, + 1321,1322,1,0,0,0,1322,1325,1,0,0,0,1323,1321,1,0,0,0,1324,1296,1,0,0, + 0,1324,1310,1,0,0,0,1325,131,1,0,0,0,1326,1327,3,184,92,0,1327,1328,5, + 147,0,0,1328,1329,5,99,0,0,1329,1330,5,147,0,0,1330,1331,3,264,132,0, + 1331,1334,1,0,0,0,1332,1334,3,184,92,0,1333,1326,1,0,0,0,1333,1332,1, + 0,0,0,1334,133,1,0,0,0,1335,1336,5,100,0,0,1336,1337,5,147,0,0,1337,1338, + 5,101,0,0,1338,1339,5,147,0,0,1339,1347,3,140,70,0,1340,1342,5,4,0,0, + 1341,1343,5,147,0,0,1342,1341,1,0,0,0,1342,1343,1,0,0,0,1343,1344,1,0, + 0,0,1344,1346,3,140,70,0,1345,1340,1,0,0,0,1346,1349,1,0,0,0,1347,1345, + 1,0,0,0,1347,1348,1,0,0,0,1348,135,1,0,0,0,1349,1347,1,0,0,0,1350,1351, + 5,102,0,0,1351,1352,5,147,0,0,1352,1353,3,184,92,0,1353,137,1,0,0,0,1354, + 1355,5,103,0,0,1355,1356,5,147,0,0,1356,1357,3,184,92,0,1357,139,1,0, + 0,0,1358,1363,3,184,92,0,1359,1361,5,147,0,0,1360,1359,1,0,0,0,1360,1361, + 1,0,0,0,1361,1362,1,0,0,0,1362,1364,7,1,0,0,1363,1360,1,0,0,0,1363,1364, + 1,0,0,0,1364,141,1,0,0,0,1365,1366,5,108,0,0,1366,1367,5,147,0,0,1367, + 1368,3,184,92,0,1368,143,1,0,0,0,1369,1380,3,146,73,0,1370,1372,5,147, + 0,0,1371,1370,1,0,0,0,1371,1372,1,0,0,0,1372,1373,1,0,0,0,1373,1375,5, + 4,0,0,1374,1376,5,147,0,0,1375,1374,1,0,0,0,1375,1376,1,0,0,0,1376,1377, + 1,0,0,0,1377,1379,3,146,73,0,1378,1371,1,0,0,0,1379,1382,1,0,0,0,1380, + 1378,1,0,0,0,1380,1381,1,0,0,0,1381,145,1,0,0,0,1382,1380,1,0,0,0,1383, + 1385,3,264,132,0,1384,1386,5,147,0,0,1385,1384,1,0,0,0,1385,1386,1,0, + 0,0,1386,1387,1,0,0,0,1387,1389,5,5,0,0,1388,1390,5,147,0,0,1389,1388, + 1,0,0,0,1389,1390,1,0,0,0,1390,1391,1,0,0,0,1391,1392,3,148,74,0,1392, + 1395,1,0,0,0,1393,1395,3,148,74,0,1394,1383,1,0,0,0,1394,1393,1,0,0,0, + 1395,147,1,0,0,0,1396,1397,3,150,75,0,1397,149,1,0,0,0,1398,1405,3,152, + 76,0,1399,1401,5,147,0,0,1400,1399,1,0,0,0,1400,1401,1,0,0,0,1401,1402, + 1,0,0,0,1402,1404,3,154,77,0,1403,1400,1,0,0,0,1404,1407,1,0,0,0,1405, + 1403,1,0,0,0,1405,1406,1,0,0,0,1406,1413,1,0,0,0,1407,1405,1,0,0,0,1408, + 1409,5,2,0,0,1409,1410,3,150,75,0,1410,1411,5,3,0,0,1411,1413,1,0,0,0, + 1412,1398,1,0,0,0,1412,1408,1,0,0,0,1413,151,1,0,0,0,1414,1416,5,2,0, + 0,1415,1417,5,147,0,0,1416,1415,1,0,0,0,1416,1417,1,0,0,0,1417,1422,1, + 0,0,0,1418,1420,3,264,132,0,1419,1421,5,147,0,0,1420,1419,1,0,0,0,1420, + 1421,1,0,0,0,1421,1423,1,0,0,0,1422,1418,1,0,0,0,1422,1423,1,0,0,0,1423, + 1428,1,0,0,0,1424,1426,3,164,82,0,1425,1427,5,147,0,0,1426,1425,1,0,0, + 0,1426,1427,1,0,0,0,1427,1429,1,0,0,0,1428,1424,1,0,0,0,1428,1429,1,0, + 0,0,1429,1434,1,0,0,0,1430,1432,3,160,80,0,1431,1433,5,147,0,0,1432,1431, + 1,0,0,0,1432,1433,1,0,0,0,1433,1435,1,0,0,0,1434,1430,1,0,0,0,1434,1435, + 1,0,0,0,1435,1436,1,0,0,0,1436,1437,5,3,0,0,1437,153,1,0,0,0,1438,1440, + 3,156,78,0,1439,1441,5,147,0,0,1440,1439,1,0,0,0,1440,1441,1,0,0,0,1441, + 1442,1,0,0,0,1442,1443,3,152,76,0,1443,155,1,0,0,0,1444,1446,3,284,142, + 0,1445,1447,5,147,0,0,1446,1445,1,0,0,0,1446,1447,1,0,0,0,1447,1448,1, + 0,0,0,1448,1450,3,288,144,0,1449,1451,5,147,0,0,1450,1449,1,0,0,0,1450, + 1451,1,0,0,0,1451,1453,1,0,0,0,1452,1454,3,158,79,0,1453,1452,1,0,0,0, + 1453,1454,1,0,0,0,1454,1456,1,0,0,0,1455,1457,5,147,0,0,1456,1455,1,0, + 0,0,1456,1457,1,0,0,0,1457,1458,1,0,0,0,1458,1459,3,288,144,0,1459,1489, + 1,0,0,0,1460,1462,3,288,144,0,1461,1463,5,147,0,0,1462,1461,1,0,0,0,1462, + 1463,1,0,0,0,1463,1465,1,0,0,0,1464,1466,3,158,79,0,1465,1464,1,0,0,0, + 1465,1466,1,0,0,0,1466,1468,1,0,0,0,1467,1469,5,147,0,0,1468,1467,1,0, + 0,0,1468,1469,1,0,0,0,1469,1470,1,0,0,0,1470,1472,3,288,144,0,1471,1473, + 5,147,0,0,1472,1471,1,0,0,0,1472,1473,1,0,0,0,1473,1474,1,0,0,0,1474, + 1475,3,286,143,0,1475,1489,1,0,0,0,1476,1478,3,288,144,0,1477,1479,5, + 147,0,0,1478,1477,1,0,0,0,1478,1479,1,0,0,0,1479,1481,1,0,0,0,1480,1482, + 3,158,79,0,1481,1480,1,0,0,0,1481,1482,1,0,0,0,1482,1484,1,0,0,0,1483, + 1485,5,147,0,0,1484,1483,1,0,0,0,1484,1485,1,0,0,0,1485,1486,1,0,0,0, + 1486,1487,3,288,144,0,1487,1489,1,0,0,0,1488,1444,1,0,0,0,1488,1460,1, + 0,0,0,1488,1476,1,0,0,0,1489,157,1,0,0,0,1490,1492,5,6,0,0,1491,1493, + 5,147,0,0,1492,1491,1,0,0,0,1492,1493,1,0,0,0,1493,1498,1,0,0,0,1494, + 1496,3,264,132,0,1495,1497,5,147,0,0,1496,1495,1,0,0,0,1496,1497,1,0, + 0,0,1497,1499,1,0,0,0,1498,1494,1,0,0,0,1498,1499,1,0,0,0,1499,1504,1, + 0,0,0,1500,1502,3,162,81,0,1501,1503,5,147,0,0,1502,1501,1,0,0,0,1502, + 1503,1,0,0,0,1503,1505,1,0,0,0,1504,1500,1,0,0,0,1504,1505,1,0,0,0,1505, + 1510,1,0,0,0,1506,1508,3,168,84,0,1507,1509,5,147,0,0,1508,1507,1,0,0, + 0,1508,1509,1,0,0,0,1509,1511,1,0,0,0,1510,1506,1,0,0,0,1510,1511,1,0, + 0,0,1511,1516,1,0,0,0,1512,1514,3,160,80,0,1513,1515,5,147,0,0,1514,1513, + 1,0,0,0,1514,1515,1,0,0,0,1515,1517,1,0,0,0,1516,1512,1,0,0,0,1516,1517, + 1,0,0,0,1517,1518,1,0,0,0,1518,1519,5,7,0,0,1519,159,1,0,0,0,1520,1522, + 5,8,0,0,1521,1523,5,147,0,0,1522,1521,1,0,0,0,1522,1523,1,0,0,0,1523, + 1557,1,0,0,0,1524,1526,3,272,136,0,1525,1527,5,147,0,0,1526,1525,1,0, + 0,0,1526,1527,1,0,0,0,1527,1528,1,0,0,0,1528,1530,5,117,0,0,1529,1531, + 5,147,0,0,1530,1529,1,0,0,0,1530,1531,1,0,0,0,1531,1532,1,0,0,0,1532, + 1534,3,184,92,0,1533,1535,5,147,0,0,1534,1533,1,0,0,0,1534,1535,1,0,0, + 0,1535,1554,1,0,0,0,1536,1538,5,4,0,0,1537,1539,5,147,0,0,1538,1537,1, + 0,0,0,1538,1539,1,0,0,0,1539,1540,1,0,0,0,1540,1542,3,272,136,0,1541, + 1543,5,147,0,0,1542,1541,1,0,0,0,1542,1543,1,0,0,0,1543,1544,1,0,0,0, + 1544,1546,5,117,0,0,1545,1547,5,147,0,0,1546,1545,1,0,0,0,1546,1547,1, + 0,0,0,1547,1548,1,0,0,0,1548,1550,3,184,92,0,1549,1551,5,147,0,0,1550, + 1549,1,0,0,0,1550,1551,1,0,0,0,1551,1553,1,0,0,0,1552,1536,1,0,0,0,1553, + 1556,1,0,0,0,1554,1552,1,0,0,0,1554,1555,1,0,0,0,1555,1558,1,0,0,0,1556, + 1554,1,0,0,0,1557,1524,1,0,0,0,1557,1558,1,0,0,0,1558,1559,1,0,0,0,1559, + 1560,5,9,0,0,1560,161,1,0,0,0,1561,1563,5,117,0,0,1562,1564,5,147,0,0, + 1563,1562,1,0,0,0,1563,1564,1,0,0,0,1564,1565,1,0,0,0,1565,1579,3,182, + 91,0,1566,1568,5,147,0,0,1567,1566,1,0,0,0,1567,1568,1,0,0,0,1568,1569, + 1,0,0,0,1569,1571,5,10,0,0,1570,1572,5,117,0,0,1571,1570,1,0,0,0,1571, + 1572,1,0,0,0,1572,1574,1,0,0,0,1573,1575,5,147,0,0,1574,1573,1,0,0,0, + 1574,1575,1,0,0,0,1575,1576,1,0,0,0,1576,1578,3,182,91,0,1577,1567,1, + 0,0,0,1578,1581,1,0,0,0,1579,1577,1,0,0,0,1579,1580,1,0,0,0,1580,163, + 1,0,0,0,1581,1579,1,0,0,0,1582,1589,3,166,83,0,1583,1585,5,147,0,0,1584, + 1583,1,0,0,0,1584,1585,1,0,0,0,1585,1586,1,0,0,0,1586,1588,3,166,83,0, + 1587,1584,1,0,0,0,1588,1591,1,0,0,0,1589,1587,1,0,0,0,1589,1590,1,0,0, + 0,1590,165,1,0,0,0,1591,1589,1,0,0,0,1592,1594,5,117,0,0,1593,1595,5, + 147,0,0,1594,1593,1,0,0,0,1594,1595,1,0,0,0,1595,1596,1,0,0,0,1596,1597, + 3,180,90,0,1597,167,1,0,0,0,1598,1600,5,98,0,0,1599,1601,5,147,0,0,1600, + 1599,1,0,0,0,1600,1601,1,0,0,0,1601,1606,1,0,0,0,1602,1607,5,109,0,0, + 1603,1604,5,83,0,0,1604,1605,5,147,0,0,1605,1607,5,109,0,0,1606,1602, + 1,0,0,0,1606,1603,1,0,0,0,1606,1607,1,0,0,0,1607,1609,1,0,0,0,1608,1610, + 5,147,0,0,1609,1608,1,0,0,0,1609,1610,1,0,0,0,1610,1625,1,0,0,0,1611, + 1613,3,176,88,0,1612,1611,1,0,0,0,1612,1613,1,0,0,0,1613,1615,1,0,0,0, + 1614,1616,5,147,0,0,1615,1614,1,0,0,0,1615,1616,1,0,0,0,1616,1617,1,0, + 0,0,1617,1619,5,11,0,0,1618,1620,5,147,0,0,1619,1618,1,0,0,0,1619,1620, + 1,0,0,0,1620,1622,1,0,0,0,1621,1623,3,178,89,0,1622,1621,1,0,0,0,1622, + 1623,1,0,0,0,1623,1626,1,0,0,0,1624,1626,3,274,137,0,1625,1612,1,0,0, + 0,1625,1624,1,0,0,0,1625,1626,1,0,0,0,1626,1631,1,0,0,0,1627,1629,5,147, + 0,0,1628,1627,1,0,0,0,1628,1629,1,0,0,0,1629,1630,1,0,0,0,1630,1632,3, + 170,85,0,1631,1628,1,0,0,0,1631,1632,1,0,0,0,1632,169,1,0,0,0,1633,1635, + 5,2,0,0,1634,1636,5,147,0,0,1635,1634,1,0,0,0,1635,1636,1,0,0,0,1636, + 1637,1,0,0,0,1637,1639,3,264,132,0,1638,1640,5,147,0,0,1639,1638,1,0, + 0,0,1639,1640,1,0,0,0,1640,1641,1,0,0,0,1641,1643,5,4,0,0,1642,1644,5, + 147,0,0,1643,1642,1,0,0,0,1643,1644,1,0,0,0,1644,1645,1,0,0,0,1645,1654, + 3,264,132,0,1646,1648,5,147,0,0,1647,1646,1,0,0,0,1647,1648,1,0,0,0,1648, + 1649,1,0,0,0,1649,1651,5,10,0,0,1650,1652,5,147,0,0,1651,1650,1,0,0,0, + 1651,1652,1,0,0,0,1652,1653,1,0,0,0,1653,1655,3,142,71,0,1654,1647,1, + 0,0,0,1654,1655,1,0,0,0,1655,1675,1,0,0,0,1656,1658,5,147,0,0,1657,1656, + 1,0,0,0,1657,1658,1,0,0,0,1658,1659,1,0,0,0,1659,1661,5,10,0,0,1660,1662, + 5,147,0,0,1661,1660,1,0,0,0,1661,1662,1,0,0,0,1662,1663,1,0,0,0,1663, + 1665,3,174,87,0,1664,1666,5,147,0,0,1665,1664,1,0,0,0,1665,1666,1,0,0, + 0,1666,1667,1,0,0,0,1667,1669,5,4,0,0,1668,1670,5,147,0,0,1669,1668,1, + 0,0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671,1673,3,172,86,0,1672,1674, + 5,147,0,0,1673,1672,1,0,0,0,1673,1674,1,0,0,0,1674,1676,1,0,0,0,1675, + 1657,1,0,0,0,1675,1676,1,0,0,0,1676,1677,1,0,0,0,1677,1678,5,3,0,0,1678, + 171,1,0,0,0,1679,1681,5,8,0,0,1680,1682,5,147,0,0,1681,1680,1,0,0,0,1681, + 1682,1,0,0,0,1682,1684,1,0,0,0,1683,1685,3,130,65,0,1684,1683,1,0,0,0, + 1684,1685,1,0,0,0,1685,1687,1,0,0,0,1686,1688,5,147,0,0,1687,1686,1,0, + 0,0,1687,1688,1,0,0,0,1688,1689,1,0,0,0,1689,1690,5,9,0,0,1690,173,1, + 0,0,0,1691,1693,5,8,0,0,1692,1694,5,147,0,0,1693,1692,1,0,0,0,1693,1694, + 1,0,0,0,1694,1696,1,0,0,0,1695,1697,3,130,65,0,1696,1695,1,0,0,0,1696, + 1697,1,0,0,0,1697,1699,1,0,0,0,1698,1700,5,147,0,0,1699,1698,1,0,0,0, + 1699,1700,1,0,0,0,1700,1701,1,0,0,0,1701,1702,5,9,0,0,1702,175,1,0,0, + 0,1703,1704,5,135,0,0,1704,177,1,0,0,0,1705,1706,5,135,0,0,1706,179,1, + 0,0,0,1707,1708,3,278,139,0,1708,181,1,0,0,0,1709,1710,3,278,139,0,1710, + 183,1,0,0,0,1711,1712,3,186,93,0,1712,185,1,0,0,0,1713,1720,3,188,94, + 0,1714,1715,5,147,0,0,1715,1716,5,110,0,0,1716,1717,5,147,0,0,1717,1719, + 3,188,94,0,1718,1714,1,0,0,0,1719,1722,1,0,0,0,1720,1718,1,0,0,0,1720, + 1721,1,0,0,0,1721,187,1,0,0,0,1722,1720,1,0,0,0,1723,1730,3,190,95,0, + 1724,1725,5,147,0,0,1725,1726,5,111,0,0,1726,1727,5,147,0,0,1727,1729, + 3,190,95,0,1728,1724,1,0,0,0,1729,1732,1,0,0,0,1730,1728,1,0,0,0,1730, + 1731,1,0,0,0,1731,189,1,0,0,0,1732,1730,1,0,0,0,1733,1740,3,192,96,0, + 1734,1735,5,147,0,0,1735,1736,5,112,0,0,1736,1737,5,147,0,0,1737,1739, + 3,192,96,0,1738,1734,1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740, + 1741,1,0,0,0,1741,191,1,0,0,0,1742,1740,1,0,0,0,1743,1745,5,113,0,0,1744, + 1746,5,147,0,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1748,1,0,0,0, + 1747,1743,1,0,0,0,1748,1751,1,0,0,0,1749,1747,1,0,0,0,1749,1750,1,0,0, + 0,1750,1752,1,0,0,0,1751,1749,1,0,0,0,1752,1753,3,194,97,0,1753,193,1, + 0,0,0,1754,1764,3,198,99,0,1755,1757,5,147,0,0,1756,1755,1,0,0,0,1756, + 1757,1,0,0,0,1757,1758,1,0,0,0,1758,1760,3,196,98,0,1759,1761,5,147,0, + 0,1760,1759,1,0,0,0,1760,1761,1,0,0,0,1761,1762,1,0,0,0,1762,1763,3,198, + 99,0,1763,1765,1,0,0,0,1764,1756,1,0,0,0,1764,1765,1,0,0,0,1765,1803, + 1,0,0,0,1766,1768,3,198,99,0,1767,1769,5,147,0,0,1768,1767,1,0,0,0,1768, + 1769,1,0,0,0,1769,1770,1,0,0,0,1770,1772,5,114,0,0,1771,1773,5,147,0, + 0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1774,1,0,0,0,1774,1775,3,198, + 99,0,1775,1776,1,0,0,0,1776,1777,6,97,-1,0,1777,1803,1,0,0,0,1778,1780, + 3,198,99,0,1779,1781,5,147,0,0,1780,1779,1,0,0,0,1780,1781,1,0,0,0,1781, + 1782,1,0,0,0,1782,1784,3,196,98,0,1783,1785,5,147,0,0,1784,1783,1,0,0, + 0,1784,1785,1,0,0,0,1785,1786,1,0,0,0,1786,1796,3,198,99,0,1787,1789, + 5,147,0,0,1788,1787,1,0,0,0,1788,1789,1,0,0,0,1789,1790,1,0,0,0,1790, + 1792,3,196,98,0,1791,1793,5,147,0,0,1792,1791,1,0,0,0,1792,1793,1,0,0, + 0,1793,1794,1,0,0,0,1794,1795,3,198,99,0,1795,1797,1,0,0,0,1796,1788, + 1,0,0,0,1797,1798,1,0,0,0,1798,1796,1,0,0,0,1798,1799,1,0,0,0,1799,1800, + 1,0,0,0,1800,1801,6,97,-1,0,1801,1803,1,0,0,0,1802,1754,1,0,0,0,1802, + 1766,1,0,0,0,1802,1778,1,0,0,0,1803,195,1,0,0,0,1804,1805,7,2,0,0,1805, + 197,1,0,0,0,1806,1817,3,200,100,0,1807,1809,5,147,0,0,1808,1807,1,0,0, + 0,1808,1809,1,0,0,0,1809,1810,1,0,0,0,1810,1812,5,10,0,0,1811,1813,5, + 147,0,0,1812,1811,1,0,0,0,1812,1813,1,0,0,0,1813,1814,1,0,0,0,1814,1816, + 3,200,100,0,1815,1808,1,0,0,0,1816,1819,1,0,0,0,1817,1815,1,0,0,0,1817, + 1818,1,0,0,0,1818,199,1,0,0,0,1819,1817,1,0,0,0,1820,1831,3,202,101,0, + 1821,1823,5,147,0,0,1822,1821,1,0,0,0,1822,1823,1,0,0,0,1823,1824,1,0, + 0,0,1824,1826,5,17,0,0,1825,1827,5,147,0,0,1826,1825,1,0,0,0,1826,1827, + 1,0,0,0,1827,1828,1,0,0,0,1828,1830,3,202,101,0,1829,1822,1,0,0,0,1830, + 1833,1,0,0,0,1831,1829,1,0,0,0,1831,1832,1,0,0,0,1832,201,1,0,0,0,1833, + 1831,1,0,0,0,1834,1846,3,206,103,0,1835,1837,5,147,0,0,1836,1835,1,0, + 0,0,1836,1837,1,0,0,0,1837,1838,1,0,0,0,1838,1840,3,204,102,0,1839,1841, + 5,147,0,0,1840,1839,1,0,0,0,1840,1841,1,0,0,0,1841,1842,1,0,0,0,1842, + 1843,3,206,103,0,1843,1845,1,0,0,0,1844,1836,1,0,0,0,1845,1848,1,0,0, + 0,1846,1844,1,0,0,0,1846,1847,1,0,0,0,1847,203,1,0,0,0,1848,1846,1,0, + 0,0,1849,1850,7,3,0,0,1850,205,1,0,0,0,1851,1863,3,210,105,0,1852,1854, + 5,147,0,0,1853,1852,1,0,0,0,1853,1854,1,0,0,0,1854,1855,1,0,0,0,1855, + 1857,3,208,104,0,1856,1858,5,147,0,0,1857,1856,1,0,0,0,1857,1858,1,0, + 0,0,1858,1859,1,0,0,0,1859,1860,3,210,105,0,1860,1862,1,0,0,0,1861,1853, + 1,0,0,0,1862,1865,1,0,0,0,1863,1861,1,0,0,0,1863,1864,1,0,0,0,1864,207, + 1,0,0,0,1865,1863,1,0,0,0,1866,1867,7,4,0,0,1867,209,1,0,0,0,1868,1880, + 3,214,107,0,1869,1871,5,147,0,0,1870,1869,1,0,0,0,1870,1871,1,0,0,0,1871, + 1872,1,0,0,0,1872,1874,3,212,106,0,1873,1875,5,147,0,0,1874,1873,1,0, + 0,0,1874,1875,1,0,0,0,1875,1876,1,0,0,0,1876,1877,3,214,107,0,1877,1879, + 1,0,0,0,1878,1870,1,0,0,0,1879,1882,1,0,0,0,1880,1878,1,0,0,0,1880,1881, + 1,0,0,0,1881,211,1,0,0,0,1882,1880,1,0,0,0,1883,1884,7,5,0,0,1884,213, + 1,0,0,0,1885,1896,3,216,108,0,1886,1888,5,147,0,0,1887,1886,1,0,0,0,1887, + 1888,1,0,0,0,1888,1889,1,0,0,0,1889,1891,5,23,0,0,1890,1892,5,147,0,0, + 1891,1890,1,0,0,0,1891,1892,1,0,0,0,1892,1893,1,0,0,0,1893,1895,3,216, + 108,0,1894,1887,1,0,0,0,1895,1898,1,0,0,0,1896,1894,1,0,0,0,1896,1897, + 1,0,0,0,1897,215,1,0,0,0,1898,1896,1,0,0,0,1899,1901,5,115,0,0,1900,1902, + 5,147,0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,1904,1,0,0,0,1903, + 1899,1,0,0,0,1904,1907,1,0,0,0,1905,1903,1,0,0,0,1905,1906,1,0,0,0,1906, + 1908,1,0,0,0,1907,1905,1,0,0,0,1908,1913,3,218,109,0,1909,1911,5,147, + 0,0,1910,1909,1,0,0,0,1910,1911,1,0,0,0,1911,1912,1,0,0,0,1912,1914,5, + 116,0,0,1913,1910,1,0,0,0,1913,1914,1,0,0,0,1914,217,1,0,0,0,1915,1923, + 3,228,114,0,1916,1924,3,222,111,0,1917,1919,3,220,110,0,1918,1917,1,0, + 0,0,1919,1920,1,0,0,0,1920,1918,1,0,0,0,1920,1921,1,0,0,0,1921,1924,1, + 0,0,0,1922,1924,3,226,113,0,1923,1916,1,0,0,0,1923,1918,1,0,0,0,1923, + 1922,1,0,0,0,1923,1924,1,0,0,0,1924,219,1,0,0,0,1925,1926,5,147,0,0,1926, + 1928,5,118,0,0,1927,1929,5,147,0,0,1928,1927,1,0,0,0,1928,1929,1,0,0, + 0,1929,1930,1,0,0,0,1930,1945,3,228,114,0,1931,1932,5,6,0,0,1932,1933, + 3,184,92,0,1933,1934,5,7,0,0,1934,1945,1,0,0,0,1935,1937,5,6,0,0,1936, + 1938,3,184,92,0,1937,1936,1,0,0,0,1937,1938,1,0,0,0,1938,1939,1,0,0,0, + 1939,1941,5,117,0,0,1940,1942,3,184,92,0,1941,1940,1,0,0,0,1941,1942, + 1,0,0,0,1942,1943,1,0,0,0,1943,1945,5,7,0,0,1944,1925,1,0,0,0,1944,1931, + 1,0,0,0,1944,1935,1,0,0,0,1945,221,1,0,0,0,1946,1958,3,224,112,0,1947, + 1948,5,147,0,0,1948,1949,5,119,0,0,1949,1950,5,147,0,0,1950,1958,5,95, + 0,0,1951,1952,5,147,0,0,1952,1953,5,120,0,0,1953,1954,5,147,0,0,1954, + 1958,5,95,0,0,1955,1956,5,147,0,0,1956,1958,5,121,0,0,1957,1946,1,0,0, + 0,1957,1947,1,0,0,0,1957,1951,1,0,0,0,1957,1955,1,0,0,0,1958,1960,1,0, + 0,0,1959,1961,5,147,0,0,1960,1959,1,0,0,0,1960,1961,1,0,0,0,1961,1962, + 1,0,0,0,1962,1963,3,228,114,0,1963,223,1,0,0,0,1964,1966,5,147,0,0,1965, + 1964,1,0,0,0,1965,1966,1,0,0,0,1966,1967,1,0,0,0,1967,1968,5,24,0,0,1968, + 225,1,0,0,0,1969,1970,5,147,0,0,1970,1971,5,122,0,0,1971,1972,5,147,0, + 0,1972,1980,5,123,0,0,1973,1974,5,147,0,0,1974,1975,5,122,0,0,1975,1976, + 5,147,0,0,1976,1977,5,113,0,0,1977,1978,5,147,0,0,1978,1980,5,123,0,0, + 1979,1969,1,0,0,0,1979,1973,1,0,0,0,1980,227,1,0,0,0,1981,1988,3,230, + 115,0,1982,1984,5,147,0,0,1983,1982,1,0,0,0,1983,1984,1,0,0,0,1984,1985, + 1,0,0,0,1985,1987,3,258,129,0,1986,1983,1,0,0,0,1987,1990,1,0,0,0,1988, + 1986,1,0,0,0,1988,1989,1,0,0,0,1989,229,1,0,0,0,1990,1988,1,0,0,0,1991, + 2001,3,232,116,0,1992,2001,3,268,134,0,1993,2001,3,260,130,0,1994,2001, + 3,244,122,0,1995,2001,3,246,123,0,1996,2001,3,252,126,0,1997,2001,3,254, + 127,0,1998,2001,3,256,128,0,1999,2001,3,264,132,0,2000,1991,1,0,0,0,2000, + 1992,1,0,0,0,2000,1993,1,0,0,0,2000,1994,1,0,0,0,2000,1995,1,0,0,0,2000, + 1996,1,0,0,0,2000,1997,1,0,0,0,2000,1998,1,0,0,0,2000,1999,1,0,0,0,2001, + 231,1,0,0,0,2002,2009,3,266,133,0,2003,2009,5,133,0,0,2004,2009,3,234, + 117,0,2005,2009,5,123,0,0,2006,2009,3,236,118,0,2007,2009,3,240,120,0, + 2008,2002,1,0,0,0,2008,2003,1,0,0,0,2008,2004,1,0,0,0,2008,2005,1,0,0, + 0,2008,2006,1,0,0,0,2008,2007,1,0,0,0,2009,233,1,0,0,0,2010,2011,7,6, + 0,0,2011,235,1,0,0,0,2012,2014,5,6,0,0,2013,2015,5,147,0,0,2014,2013, + 1,0,0,0,2014,2015,1,0,0,0,2015,2029,1,0,0,0,2016,2018,3,184,92,0,2017, + 2019,5,147,0,0,2018,2017,1,0,0,0,2018,2019,1,0,0,0,2019,2026,1,0,0,0, + 2020,2022,3,238,119,0,2021,2023,5,147,0,0,2022,2021,1,0,0,0,2022,2023, + 1,0,0,0,2023,2025,1,0,0,0,2024,2020,1,0,0,0,2025,2028,1,0,0,0,2026,2024, + 1,0,0,0,2026,2027,1,0,0,0,2027,2030,1,0,0,0,2028,2026,1,0,0,0,2029,2016, + 1,0,0,0,2029,2030,1,0,0,0,2030,2031,1,0,0,0,2031,2032,5,7,0,0,2032,237, + 1,0,0,0,2033,2035,5,4,0,0,2034,2036,5,147,0,0,2035,2034,1,0,0,0,2035, + 2036,1,0,0,0,2036,2038,1,0,0,0,2037,2039,3,184,92,0,2038,2037,1,0,0,0, + 2038,2039,1,0,0,0,2039,239,1,0,0,0,2040,2042,5,8,0,0,2041,2043,5,147, + 0,0,2042,2041,1,0,0,0,2042,2043,1,0,0,0,2043,2044,1,0,0,0,2044,2046,3, + 242,121,0,2045,2047,5,147,0,0,2046,2045,1,0,0,0,2046,2047,1,0,0,0,2047, + 2058,1,0,0,0,2048,2050,5,4,0,0,2049,2051,5,147,0,0,2050,2049,1,0,0,0, + 2050,2051,1,0,0,0,2051,2052,1,0,0,0,2052,2054,3,242,121,0,2053,2055,5, + 147,0,0,2054,2053,1,0,0,0,2054,2055,1,0,0,0,2055,2057,1,0,0,0,2056,2048, + 1,0,0,0,2057,2060,1,0,0,0,2058,2056,1,0,0,0,2058,2059,1,0,0,0,2059,2061, + 1,0,0,0,2060,2058,1,0,0,0,2061,2062,5,9,0,0,2062,241,1,0,0,0,2063,2066, + 3,280,140,0,2064,2066,5,133,0,0,2065,2063,1,0,0,0,2065,2064,1,0,0,0,2066, + 2068,1,0,0,0,2067,2069,5,147,0,0,2068,2067,1,0,0,0,2068,2069,1,0,0,0, + 2069,2070,1,0,0,0,2070,2072,5,117,0,0,2071,2073,5,147,0,0,2072,2071,1, + 0,0,0,2072,2073,1,0,0,0,2073,2074,1,0,0,0,2074,2075,3,184,92,0,2075,243, + 1,0,0,0,2076,2078,5,2,0,0,2077,2079,5,147,0,0,2078,2077,1,0,0,0,2078, + 2079,1,0,0,0,2079,2080,1,0,0,0,2080,2082,3,184,92,0,2081,2083,5,147,0, + 0,2082,2081,1,0,0,0,2082,2083,1,0,0,0,2083,2084,1,0,0,0,2084,2085,5,3, + 0,0,2085,245,1,0,0,0,2086,2088,5,126,0,0,2087,2089,5,147,0,0,2088,2087, + 1,0,0,0,2088,2089,1,0,0,0,2089,2090,1,0,0,0,2090,2092,5,2,0,0,2091,2093, + 5,147,0,0,2092,2091,1,0,0,0,2092,2093,1,0,0,0,2093,2094,1,0,0,0,2094, + 2096,5,98,0,0,2095,2097,5,147,0,0,2096,2095,1,0,0,0,2096,2097,1,0,0,0, + 2097,2098,1,0,0,0,2098,2135,5,3,0,0,2099,2101,3,248,124,0,2100,2102,5, + 147,0,0,2101,2100,1,0,0,0,2101,2102,1,0,0,0,2102,2103,1,0,0,0,2103,2105, + 5,2,0,0,2104,2106,5,147,0,0,2105,2104,1,0,0,0,2105,2106,1,0,0,0,2106, + 2111,1,0,0,0,2107,2109,5,97,0,0,2108,2110,5,147,0,0,2109,2108,1,0,0,0, + 2109,2110,1,0,0,0,2110,2112,1,0,0,0,2111,2107,1,0,0,0,2111,2112,1,0,0, + 0,2112,2130,1,0,0,0,2113,2115,3,250,125,0,2114,2116,5,147,0,0,2115,2114, + 1,0,0,0,2115,2116,1,0,0,0,2116,2127,1,0,0,0,2117,2119,5,4,0,0,2118,2120, + 5,147,0,0,2119,2118,1,0,0,0,2119,2120,1,0,0,0,2120,2121,1,0,0,0,2121, + 2123,3,250,125,0,2122,2124,5,147,0,0,2123,2122,1,0,0,0,2123,2124,1,0, + 0,0,2124,2126,1,0,0,0,2125,2117,1,0,0,0,2126,2129,1,0,0,0,2127,2125,1, + 0,0,0,2127,2128,1,0,0,0,2128,2131,1,0,0,0,2129,2127,1,0,0,0,2130,2113, + 1,0,0,0,2130,2131,1,0,0,0,2131,2132,1,0,0,0,2132,2133,5,3,0,0,2133,2135, + 1,0,0,0,2134,2086,1,0,0,0,2134,2099,1,0,0,0,2135,247,1,0,0,0,2136,2137, + 3,280,140,0,2137,249,1,0,0,0,2138,2140,3,280,140,0,2139,2141,5,147,0, + 0,2140,2139,1,0,0,0,2140,2141,1,0,0,0,2141,2142,1,0,0,0,2142,2143,5,117, + 0,0,2143,2145,5,5,0,0,2144,2146,5,147,0,0,2145,2144,1,0,0,0,2145,2146, + 1,0,0,0,2146,2148,1,0,0,0,2147,2138,1,0,0,0,2147,2148,1,0,0,0,2148,2149, + 1,0,0,0,2149,2150,3,184,92,0,2150,251,1,0,0,0,2151,2156,3,152,76,0,2152, + 2154,5,147,0,0,2153,2152,1,0,0,0,2153,2154,1,0,0,0,2154,2155,1,0,0,0, + 2155,2157,3,154,77,0,2156,2153,1,0,0,0,2157,2158,1,0,0,0,2158,2156,1, + 0,0,0,2158,2159,1,0,0,0,2159,253,1,0,0,0,2160,2162,5,127,0,0,2161,2163, + 5,147,0,0,2162,2161,1,0,0,0,2162,2163,1,0,0,0,2163,2164,1,0,0,0,2164, + 2166,5,8,0,0,2165,2167,5,147,0,0,2166,2165,1,0,0,0,2166,2167,1,0,0,0, + 2167,2168,1,0,0,0,2168,2170,5,87,0,0,2169,2171,5,147,0,0,2170,2169,1, + 0,0,0,2170,2171,1,0,0,0,2171,2172,1,0,0,0,2172,2177,3,144,72,0,2173,2175, + 5,147,0,0,2174,2173,1,0,0,0,2174,2175,1,0,0,0,2175,2176,1,0,0,0,2176, + 2178,3,142,71,0,2177,2174,1,0,0,0,2177,2178,1,0,0,0,2178,2180,1,0,0,0, + 2179,2181,5,147,0,0,2180,2179,1,0,0,0,2180,2181,1,0,0,0,2181,2182,1,0, + 0,0,2182,2183,5,9,0,0,2183,255,1,0,0,0,2184,2186,5,126,0,0,2185,2187, + 5,147,0,0,2186,2185,1,0,0,0,2186,2187,1,0,0,0,2187,2188,1,0,0,0,2188, + 2190,5,8,0,0,2189,2191,5,147,0,0,2190,2189,1,0,0,0,2190,2191,1,0,0,0, + 2191,2192,1,0,0,0,2192,2194,5,87,0,0,2193,2195,5,147,0,0,2194,2193,1, + 0,0,0,2194,2195,1,0,0,0,2195,2196,1,0,0,0,2196,2201,3,144,72,0,2197,2199, + 5,147,0,0,2198,2197,1,0,0,0,2198,2199,1,0,0,0,2199,2200,1,0,0,0,2200, + 2202,3,142,71,0,2201,2198,1,0,0,0,2201,2202,1,0,0,0,2202,2204,1,0,0,0, + 2203,2205,5,147,0,0,2204,2203,1,0,0,0,2204,2205,1,0,0,0,2205,2206,1,0, + 0,0,2206,2207,5,9,0,0,2207,257,1,0,0,0,2208,2210,5,25,0,0,2209,2211,5, + 147,0,0,2210,2209,1,0,0,0,2210,2211,1,0,0,0,2211,2214,1,0,0,0,2212,2215, + 3,272,136,0,2213,2215,5,98,0,0,2214,2212,1,0,0,0,2214,2213,1,0,0,0,2215, + 259,1,0,0,0,2216,2221,5,128,0,0,2217,2219,5,147,0,0,2218,2217,1,0,0,0, + 2218,2219,1,0,0,0,2219,2220,1,0,0,0,2220,2222,3,262,131,0,2221,2218,1, + 0,0,0,2222,2223,1,0,0,0,2223,2221,1,0,0,0,2223,2224,1,0,0,0,2224,2239, + 1,0,0,0,2225,2227,5,128,0,0,2226,2228,5,147,0,0,2227,2226,1,0,0,0,2227, + 2228,1,0,0,0,2228,2229,1,0,0,0,2229,2234,3,184,92,0,2230,2232,5,147,0, + 0,2231,2230,1,0,0,0,2231,2232,1,0,0,0,2232,2233,1,0,0,0,2233,2235,3,262, + 131,0,2234,2231,1,0,0,0,2235,2236,1,0,0,0,2236,2234,1,0,0,0,2236,2237, + 1,0,0,0,2237,2239,1,0,0,0,2238,2216,1,0,0,0,2238,2225,1,0,0,0,2239,2248, + 1,0,0,0,2240,2242,5,147,0,0,2241,2240,1,0,0,0,2241,2242,1,0,0,0,2242, + 2243,1,0,0,0,2243,2245,5,129,0,0,2244,2246,5,147,0,0,2245,2244,1,0,0, + 0,2245,2246,1,0,0,0,2246,2247,1,0,0,0,2247,2249,3,184,92,0,2248,2241, + 1,0,0,0,2248,2249,1,0,0,0,2249,2251,1,0,0,0,2250,2252,5,147,0,0,2251, + 2250,1,0,0,0,2251,2252,1,0,0,0,2252,2253,1,0,0,0,2253,2254,5,130,0,0, + 2254,261,1,0,0,0,2255,2257,5,131,0,0,2256,2258,5,147,0,0,2257,2256,1, + 0,0,0,2257,2258,1,0,0,0,2258,2259,1,0,0,0,2259,2261,3,184,92,0,2260,2262, + 5,147,0,0,2261,2260,1,0,0,0,2261,2262,1,0,0,0,2262,2263,1,0,0,0,2263, + 2265,5,132,0,0,2264,2266,5,147,0,0,2265,2264,1,0,0,0,2265,2266,1,0,0, + 0,2266,2267,1,0,0,0,2267,2268,3,184,92,0,2268,263,1,0,0,0,2269,2270,3, + 280,140,0,2270,265,1,0,0,0,2271,2274,3,276,138,0,2272,2274,3,274,137, + 0,2273,2271,1,0,0,0,2273,2272,1,0,0,0,2274,267,1,0,0,0,2275,2278,5,26, + 0,0,2276,2279,3,280,140,0,2277,2279,5,135,0,0,2278,2276,1,0,0,0,2278, + 2277,1,0,0,0,2279,269,1,0,0,0,2280,2282,3,230,115,0,2281,2283,5,147,0, + 0,2282,2281,1,0,0,0,2282,2283,1,0,0,0,2283,2284,1,0,0,0,2284,2285,3,258, + 129,0,2285,271,1,0,0,0,2286,2287,3,278,139,0,2287,273,1,0,0,0,2288,2289, + 5,135,0,0,2289,275,1,0,0,0,2290,2291,5,142,0,0,2291,277,1,0,0,0,2292, + 2293,3,280,140,0,2293,279,1,0,0,0,2294,2300,5,143,0,0,2295,2296,5,146, + 0,0,2296,2300,6,140,-1,0,2297,2300,5,136,0,0,2298,2300,3,282,141,0,2299, + 2294,1,0,0,0,2299,2295,1,0,0,0,2299,2297,1,0,0,0,2299,2298,1,0,0,0,2300, + 281,1,0,0,0,2301,2302,7,7,0,0,2302,283,1,0,0,0,2303,2304,7,8,0,0,2304, + 285,1,0,0,0,2305,2306,7,9,0,0,2306,287,1,0,0,0,2307,2308,7,10,0,0,2308, + 289,1,0,0,0,401,292,296,301,305,310,313,317,320,334,340,344,348,352,355, + 361,364,368,372,376,380,384,389,400,404,408,413,426,430,438,442,446,450, + 458,462,466,470,482,486,508,512,515,518,521,524,528,533,537,547,551,556, + 561,566,572,576,580,585,592,596,600,603,607,611,616,621,625,635,645,649, + 653,657,662,674,678,682,686,690,692,696,700,702,716,720,724,728,733,736, + 740,744,746,750,754,756,792,803,825,829,834,845,849,853,861,865,869,875, + 879,883,889,893,897,901,905,909,915,922,927,933,953,957,965,975,980,985, + 989,994,1000,1005,1008,1012,1016,1020,1026,1030,1035,1040,1044,1047,1051, + 1055,1059,1063,1067,1073,1077,1082,1086,1095,1101,1109,1113,1117,1121, + 1128,1132,1136,1140,1143,1146,1149,1155,1158,1162,1166,1170,1173,1177, + 1187,1193,1200,1213,1217,1221,1225,1230,1235,1239,1245,1249,1253,1257, + 1262,1268,1271,1277,1280,1286,1290,1294,1298,1302,1307,1312,1316,1321, + 1324,1333,1342,1347,1360,1363,1371,1375,1380,1385,1389,1394,1400,1405, + 1412,1416,1420,1422,1426,1428,1432,1434,1440,1446,1450,1453,1456,1462, + 1465,1468,1472,1478,1481,1484,1488,1492,1496,1498,1502,1504,1508,1510, + 1514,1516,1522,1526,1530,1534,1538,1542,1546,1550,1554,1557,1563,1567, + 1571,1574,1579,1584,1589,1594,1600,1606,1609,1612,1615,1619,1622,1625, + 1628,1631,1635,1639,1643,1647,1651,1654,1657,1661,1665,1669,1673,1675, + 1681,1684,1687,1693,1696,1699,1720,1730,1740,1745,1749,1756,1760,1764, + 1768,1772,1780,1784,1788,1792,1798,1802,1808,1812,1817,1822,1826,1831, + 1836,1840,1846,1853,1857,1863,1870,1874,1880,1887,1891,1896,1901,1905, + 1910,1913,1920,1923,1928,1937,1941,1944,1957,1960,1965,1979,1983,1988, + 2000,2008,2014,2018,2022,2026,2029,2035,2038,2042,2046,2050,2054,2058, + 2065,2068,2072,2078,2082,2088,2092,2096,2101,2105,2109,2111,2115,2119, + 2123,2127,2130,2134,2140,2145,2147,2153,2158,2162,2166,2170,2174,2177, + 2180,2186,2190,2194,2198,2201,2204,2210,2214,2218,2223,2227,2231,2236, + 2238,2241,2245,2248,2251,2257,2261,2265,2273,2278,2282,2299 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -1127,29 +1130,29 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(288); + setState(290); oC_Cypher(); - setState(299); + setState(301); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(290); + setState(292); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(289); + setState(291); match(CypherParser::SP); } - setState(292); - match(CypherParser::T__0); setState(294); + match(CypherParser::T__0); + setState(296); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { - setState(293); + setState(295); match(CypherParser::SP); break; } @@ -1157,22 +1160,22 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { default: break; } - setState(296); + setState(298); oC_Cypher(); } - setState(301); + setState(303); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); } - setState(303); + setState(305); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(302); + setState(304); match(CypherParser::SP); } - setState(305); + setState(307); match(CypherParser::EOF); } @@ -1227,41 +1230,41 @@ CypherParser::OC_CypherContext* CypherParser::oC_Cypher() { }); try { enterOuterAlt(_localctx, 1); - setState(308); + setState(310); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::EXPLAIN || _la == CypherParser::PROFILE) { - setState(307); + setState(309); oC_AnyCypherOption(); } - setState(311); + setState(313); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(310); + setState(312); match(CypherParser::SP); } - setState(313); + setState(315); oC_Statement(); - setState(318); + setState(320); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { case 1: { - setState(315); + setState(317); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(314); + setState(316); match(CypherParser::SP); } - setState(317); + setState(319); match(CypherParser::T__0); break; } @@ -1330,6 +1333,10 @@ CypherParser::KU_ExportDatabaseContext* CypherParser::OC_StatementContext::kU_Ex return getRuleContext(0); } +CypherParser::KU_ImportDatabaseContext* CypherParser::OC_StatementContext::kU_ImportDatabase() { + return getRuleContext(0); +} + size_t CypherParser::OC_StatementContext::getRuleIndex() const { return CypherParser::RuleOC_Statement; @@ -1348,86 +1355,93 @@ CypherParser::OC_StatementContext* CypherParser::oC_Statement() { exitRule(); }); try { - setState(331); + setState(334); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(320); + setState(322); oC_Query(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(321); + setState(323); kU_DDL(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(322); + setState(324); kU_CopyFrom(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(323); + setState(325); kU_CopyFromByColumn(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(324); + setState(326); kU_CopyTO(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(325); + setState(327); kU_StandaloneCall(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(326); + setState(328); kU_CreateMacro(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(327); + setState(329); kU_CommentOn(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(328); + setState(330); kU_Transaction(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(329); + setState(331); kU_Extension(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(330); + setState(332); kU_ExportDatabase(); break; } + case 12: { + enterOuterAlt(_localctx, 12); + setState(333); + kU_ImportDatabase(); + break; + } + default: break; } @@ -1504,59 +1518,59 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(333); + setState(336); match(CypherParser::COPY); - setState(334); + setState(337); match(CypherParser::SP); - setState(335); + setState(338); oC_SchemaName(); - setState(352); + setState(355); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { - setState(337); + setState(340); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(336); + setState(339); match(CypherParser::SP); } - setState(339); + setState(342); match(CypherParser::T__1); - setState(341); + setState(344); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(340); + setState(343); match(CypherParser::SP); } - setState(343); + setState(346); kU_ColumnNames(); - setState(345); + setState(348); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(344); + setState(347); match(CypherParser::SP); } - setState(347); + setState(350); match(CypherParser::T__2); - setState(349); + setState(352); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(348); + setState(351); match(CypherParser::SP); } break; } case 2: { - setState(351); + setState(354); match(CypherParser::SP); break; } @@ -1564,23 +1578,24 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { default: break; } - setState(354); + setState(357); match(CypherParser::FROM); - setState(355); - match(CypherParser::SP); setState(358); + match(CypherParser::SP); + setState(361); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__5: case CypherParser::GLOB: case CypherParser::StringLiteral: { - setState(356); + setState(359); kU_FilePaths(); break; } case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -1591,7 +1606,7 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(357); + setState(360); oC_Variable(); break; } @@ -1599,40 +1614,40 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { default: throw NoViableAltException(this); } - setState(373); + setState(376); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 18, _ctx)) { case 1: { - setState(361); + setState(364); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(360); + setState(363); match(CypherParser::SP); } - setState(363); + setState(366); match(CypherParser::T__1); - setState(365); + setState(368); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(364); + setState(367); match(CypherParser::SP); } - setState(367); + setState(370); kU_ParsingOptions(); - setState(369); + setState(372); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(368); + setState(371); match(CypherParser::SP); } - setState(371); + setState(374); match(CypherParser::T__2); break; } @@ -1694,35 +1709,35 @@ CypherParser::KU_ColumnNamesContext* CypherParser::kU_ColumnNames() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(375); + setState(378); oC_SchemaName(); - setState(386); + setState(389); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 21, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(377); + setState(380); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(376); + setState(379); match(CypherParser::SP); } - setState(379); + setState(382); match(CypherParser::T__3); - setState(381); + setState(384); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(380); + setState(383); match(CypherParser::SP); } - setState(383); + setState(386); oC_SchemaName(); } - setState(388); + setState(391); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 21, _ctx); } @@ -1799,67 +1814,67 @@ CypherParser::KU_CopyFromByColumnContext* CypherParser::kU_CopyFromByColumn() { }); try { enterOuterAlt(_localctx, 1); - setState(389); + setState(392); match(CypherParser::COPY); - setState(390); + setState(393); match(CypherParser::SP); - setState(391); + setState(394); oC_SchemaName(); - setState(392); + setState(395); match(CypherParser::SP); - setState(393); + setState(396); match(CypherParser::FROM); - setState(394); + setState(397); match(CypherParser::SP); - setState(395); + setState(398); match(CypherParser::T__1); - setState(397); + setState(400); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(396); + setState(399); match(CypherParser::SP); } - setState(399); + setState(402); match(CypherParser::StringLiteral); - setState(410); + setState(413); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3 || _la == CypherParser::SP) { - setState(401); + setState(404); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(400); + setState(403); match(CypherParser::SP); } - setState(403); + setState(406); match(CypherParser::T__3); - setState(405); + setState(408); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(404); + setState(407); match(CypherParser::SP); } - setState(407); + setState(410); match(CypherParser::StringLiteral); - setState(412); + setState(415); _errHandler->sync(this); _la = _input->LA(1); } - setState(413); + setState(416); match(CypherParser::T__2); - setState(414); + setState(417); match(CypherParser::SP); - setState(415); + setState(418); match(CypherParser::BY); - setState(416); + setState(419); match(CypherParser::SP); - setState(417); + setState(420); match(CypherParser::COLUMN); } @@ -1926,74 +1941,74 @@ CypherParser::KU_CopyTOContext* CypherParser::kU_CopyTO() { }); try { enterOuterAlt(_localctx, 1); - setState(419); + setState(422); match(CypherParser::COPY); - setState(420); + setState(423); match(CypherParser::SP); - setState(421); + setState(424); match(CypherParser::T__1); - setState(423); + setState(426); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(422); + setState(425); match(CypherParser::SP); } - setState(425); + setState(428); oC_Query(); - setState(427); + setState(430); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(426); + setState(429); match(CypherParser::SP); } - setState(429); + setState(432); match(CypherParser::T__2); - setState(430); + setState(433); match(CypherParser::SP); - setState(431); + setState(434); match(CypherParser::TO); - setState(432); + setState(435); match(CypherParser::SP); - setState(433); + setState(436); match(CypherParser::StringLiteral); - setState(447); + setState(450); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 31, _ctx)) { case 1: { - setState(435); + setState(438); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(434); + setState(437); match(CypherParser::SP); } - setState(437); + setState(440); match(CypherParser::T__1); - setState(439); + setState(442); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(438); + setState(441); match(CypherParser::SP); } - setState(441); + setState(444); kU_ParsingOptions(); - setState(443); + setState(446); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(442); + setState(445); match(CypherParser::SP); } - setState(445); + setState(448); match(CypherParser::T__2); break; } @@ -2062,50 +2077,50 @@ CypherParser::KU_ExportDatabaseContext* CypherParser::kU_ExportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(449); + setState(452); match(CypherParser::EXPORT); - setState(450); + setState(453); match(CypherParser::SP); - setState(451); + setState(454); match(CypherParser::DATABASE); - setState(452); + setState(455); match(CypherParser::SP); - setState(453); + setState(456); match(CypherParser::StringLiteral); - setState(467); + setState(470); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 35, _ctx)) { case 1: { - setState(455); + setState(458); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(454); + setState(457); match(CypherParser::SP); } - setState(457); + setState(460); match(CypherParser::T__1); - setState(459); + setState(462); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(458); + setState(461); match(CypherParser::SP); } - setState(461); + setState(464); kU_ParsingOptions(); - setState(463); + setState(466); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(462); + setState(465); match(CypherParser::SP); } - setState(465); + setState(468); match(CypherParser::T__2); break; } @@ -2124,6 +2139,72 @@ CypherParser::KU_ExportDatabaseContext* CypherParser::kU_ExportDatabase() { return _localctx; } +//----------------- KU_ImportDatabaseContext ------------------------------------------------------------------ + +CypherParser::KU_ImportDatabaseContext::KU_ImportDatabaseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* CypherParser::KU_ImportDatabaseContext::IMPORT() { + return getToken(CypherParser::IMPORT, 0); +} + +std::vector CypherParser::KU_ImportDatabaseContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::KU_ImportDatabaseContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + +tree::TerminalNode* CypherParser::KU_ImportDatabaseContext::DATABASE() { + return getToken(CypherParser::DATABASE, 0); +} + +tree::TerminalNode* CypherParser::KU_ImportDatabaseContext::StringLiteral() { + return getToken(CypherParser::StringLiteral, 0); +} + + +size_t CypherParser::KU_ImportDatabaseContext::getRuleIndex() const { + return CypherParser::RuleKU_ImportDatabase; +} + + +CypherParser::KU_ImportDatabaseContext* CypherParser::kU_ImportDatabase() { + KU_ImportDatabaseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 16, CypherParser::RuleKU_ImportDatabase); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(472); + match(CypherParser::IMPORT); + setState(473); + match(CypherParser::SP); + setState(474); + match(CypherParser::DATABASE); + setState(475); + match(CypherParser::SP); + setState(476); + match(CypherParser::StringLiteral); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + //----------------- KU_StandaloneCallContext ------------------------------------------------------------------ CypherParser::KU_StandaloneCallContext::KU_StandaloneCallContext(ParserRuleContext *parent, size_t invokingState) @@ -2158,7 +2239,7 @@ size_t CypherParser::KU_StandaloneCallContext::getRuleIndex() const { CypherParser::KU_StandaloneCallContext* CypherParser::kU_StandaloneCall() { KU_StandaloneCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 16, CypherParser::RuleKU_StandaloneCall); + enterRule(_localctx, 18, CypherParser::RuleKU_StandaloneCall); size_t _la = 0; #if __cplusplus > 201703L @@ -2170,31 +2251,31 @@ CypherParser::KU_StandaloneCallContext* CypherParser::kU_StandaloneCall() { }); try { enterOuterAlt(_localctx, 1); - setState(469); + setState(478); match(CypherParser::CALL); - setState(470); + setState(479); match(CypherParser::SP); - setState(471); + setState(480); oC_SymbolicName(); - setState(473); + setState(482); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(472); + setState(481); match(CypherParser::SP); } - setState(475); + setState(484); match(CypherParser::T__4); - setState(477); + setState(486); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(476); + setState(485); match(CypherParser::SP); } - setState(479); + setState(488); oC_Literal(); } @@ -2253,7 +2334,7 @@ size_t CypherParser::KU_CommentOnContext::getRuleIndex() const { CypherParser::KU_CommentOnContext* CypherParser::kU_CommentOn() { KU_CommentOnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 18, CypherParser::RuleKU_CommentOn); + enterRule(_localctx, 20, CypherParser::RuleKU_CommentOn); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2264,27 +2345,27 @@ CypherParser::KU_CommentOnContext* CypherParser::kU_CommentOn() { }); try { enterOuterAlt(_localctx, 1); - setState(481); + setState(490); match(CypherParser::COMMENT); - setState(482); + setState(491); match(CypherParser::SP); - setState(483); + setState(492); match(CypherParser::ON); - setState(484); + setState(493); match(CypherParser::SP); - setState(485); + setState(494); match(CypherParser::TABLE); - setState(486); + setState(495); match(CypherParser::SP); - setState(487); + setState(496); oC_SchemaName(); - setState(488); + setState(497); match(CypherParser::SP); - setState(489); + setState(498); match(CypherParser::IS); - setState(490); + setState(499); match(CypherParser::SP); - setState(491); + setState(500); match(CypherParser::StringLiteral); } @@ -2351,7 +2432,7 @@ size_t CypherParser::KU_CreateMacroContext::getRuleIndex() const { CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { KU_CreateMacroContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 20, CypherParser::RuleKU_CreateMacro); + enterRule(_localctx, 22, CypherParser::RuleKU_CreateMacro); size_t _la = 0; #if __cplusplus > 201703L @@ -2364,32 +2445,32 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(493); + setState(502); match(CypherParser::CREATE); - setState(494); + setState(503); match(CypherParser::SP); - setState(495); + setState(504); match(CypherParser::MACRO); - setState(496); + setState(505); match(CypherParser::SP); - setState(497); + setState(506); oC_FunctionName(); - setState(499); + setState(508); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(498); + setState(507); match(CypherParser::SP); } - setState(501); + setState(510); match(CypherParser::T__1); - setState(503); + setState(512); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 39, _ctx)) { case 1: { - setState(502); + setState(511); match(CypherParser::SP); break; } @@ -2397,12 +2478,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(506); + setState(515); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 40, _ctx)) { case 1: { - setState(505); + setState(514); kU_PositionalArgs(); break; } @@ -2410,12 +2491,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(509); + setState(518); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { case 1: { - setState(508); + setState(517); match(CypherParser::SP); break; } @@ -2423,63 +2504,63 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(512); + setState(521); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 47) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 47)) & 8913345) != 0) || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & 302256385) != 0)) { - setState(511); + ((1ULL << (_la - 47)) & 17826753) != 0) || ((((_la - 118) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 118)) & 302256385) != 0)) { + setState(520); kU_DefaultArg(); } - setState(524); + setState(533); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 45, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(515); + setState(524); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(514); + setState(523); match(CypherParser::SP); } - setState(517); + setState(526); match(CypherParser::T__3); - setState(519); + setState(528); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(518); + setState(527); match(CypherParser::SP); } - setState(521); + setState(530); kU_DefaultArg(); } - setState(526); + setState(535); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 45, _ctx); } - setState(528); + setState(537); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(527); + setState(536); match(CypherParser::SP); } - setState(530); + setState(539); match(CypherParser::T__2); - setState(531); + setState(540); match(CypherParser::SP); - setState(532); + setState(541); match(CypherParser::AS); - setState(533); + setState(542); match(CypherParser::SP); - setState(534); + setState(543); oC_Expression(); } @@ -2522,7 +2603,7 @@ size_t CypherParser::KU_PositionalArgsContext::getRuleIndex() const { CypherParser::KU_PositionalArgsContext* CypherParser::kU_PositionalArgs() { KU_PositionalArgsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 22, CypherParser::RuleKU_PositionalArgs); + enterRule(_localctx, 24, CypherParser::RuleKU_PositionalArgs); size_t _la = 0; #if __cplusplus > 201703L @@ -2535,35 +2616,35 @@ CypherParser::KU_PositionalArgsContext* CypherParser::kU_PositionalArgs() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(536); + setState(545); oC_SymbolicName(); - setState(547); + setState(556); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(538); + setState(547); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(537); + setState(546); match(CypherParser::SP); } - setState(540); + setState(549); match(CypherParser::T__3); - setState(542); + setState(551); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(541); + setState(550); match(CypherParser::SP); } - setState(544); + setState(553); oC_SymbolicName(); } - setState(549); + setState(558); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); } @@ -2612,7 +2693,7 @@ size_t CypherParser::KU_DefaultArgContext::getRuleIndex() const { CypherParser::KU_DefaultArgContext* CypherParser::kU_DefaultArg() { KU_DefaultArgContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 24, CypherParser::RuleKU_DefaultArg); + enterRule(_localctx, 26, CypherParser::RuleKU_DefaultArg); size_t _la = 0; #if __cplusplus > 201703L @@ -2624,29 +2705,29 @@ CypherParser::KU_DefaultArgContext* CypherParser::kU_DefaultArg() { }); try { enterOuterAlt(_localctx, 1); - setState(550); + setState(559); oC_SymbolicName(); - setState(552); + setState(561); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(551); + setState(560); match(CypherParser::SP); } - setState(554); + setState(563); match(CypherParser::COLON); - setState(555); + setState(564); match(CypherParser::T__4); - setState(557); + setState(566); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(556); + setState(565); match(CypherParser::SP); } - setState(559); + setState(568); oC_Literal(); } @@ -2693,7 +2774,7 @@ size_t CypherParser::KU_FilePathsContext::getRuleIndex() const { CypherParser::KU_FilePathsContext* CypherParser::kU_FilePaths() { KU_FilePathsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 26, CypherParser::RuleKU_FilePaths); + enterRule(_localctx, 28, CypherParser::RuleKU_FilePaths); size_t _la = 0; #if __cplusplus > 201703L @@ -2704,96 +2785,96 @@ CypherParser::KU_FilePathsContext* CypherParser::kU_FilePaths() { exitRule(); }); try { - setState(594); + setState(603); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__5: { enterOuterAlt(_localctx, 1); - setState(561); + setState(570); match(CypherParser::T__5); - setState(563); + setState(572); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(562); + setState(571); match(CypherParser::SP); } - setState(565); + setState(574); match(CypherParser::StringLiteral); - setState(576); + setState(585); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3 || _la == CypherParser::SP) { - setState(567); + setState(576); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(566); + setState(575); match(CypherParser::SP); } - setState(569); + setState(578); match(CypherParser::T__3); - setState(571); + setState(580); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(570); + setState(579); match(CypherParser::SP); } - setState(573); + setState(582); match(CypherParser::StringLiteral); - setState(578); + setState(587); _errHandler->sync(this); _la = _input->LA(1); } - setState(579); + setState(588); match(CypherParser::T__6); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(580); + setState(589); match(CypherParser::StringLiteral); break; } case CypherParser::GLOB: { enterOuterAlt(_localctx, 3); - setState(581); + setState(590); match(CypherParser::GLOB); - setState(583); + setState(592); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(582); + setState(591); match(CypherParser::SP); } - setState(585); + setState(594); match(CypherParser::T__1); - setState(587); + setState(596); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(586); + setState(595); match(CypherParser::SP); } - setState(589); + setState(598); match(CypherParser::StringLiteral); - setState(591); + setState(600); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(590); + setState(599); match(CypherParser::SP); } - setState(593); + setState(602); match(CypherParser::T__2); break; } @@ -2842,7 +2923,7 @@ size_t CypherParser::KU_ParsingOptionsContext::getRuleIndex() const { CypherParser::KU_ParsingOptionsContext* CypherParser::kU_ParsingOptions() { KU_ParsingOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 28, CypherParser::RuleKU_ParsingOptions); + enterRule(_localctx, 30, CypherParser::RuleKU_ParsingOptions); size_t _la = 0; #if __cplusplus > 201703L @@ -2855,35 +2936,35 @@ CypherParser::KU_ParsingOptionsContext* CypherParser::kU_ParsingOptions() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(596); + setState(605); kU_ParsingOption(); - setState(607); + setState(616); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 62, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(598); + setState(607); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(597); + setState(606); match(CypherParser::SP); } - setState(600); + setState(609); match(CypherParser::T__3); - setState(602); + setState(611); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(601); + setState(610); match(CypherParser::SP); } - setState(604); + setState(613); kU_ParsingOption(); } - setState(609); + setState(618); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 62, _ctx); } @@ -2928,7 +3009,7 @@ size_t CypherParser::KU_ParsingOptionContext::getRuleIndex() const { CypherParser::KU_ParsingOptionContext* CypherParser::kU_ParsingOption() { KU_ParsingOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 30, CypherParser::RuleKU_ParsingOption); + enterRule(_localctx, 32, CypherParser::RuleKU_ParsingOption); size_t _la = 0; #if __cplusplus > 201703L @@ -2940,27 +3021,27 @@ CypherParser::KU_ParsingOptionContext* CypherParser::kU_ParsingOption() { }); try { enterOuterAlt(_localctx, 1); - setState(610); + setState(619); oC_SymbolicName(); - setState(612); + setState(621); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(611); + setState(620); match(CypherParser::SP); } - setState(614); + setState(623); match(CypherParser::T__4); - setState(616); + setState(625); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(615); + setState(624); match(CypherParser::SP); } - setState(618); + setState(627); oC_Literal(); } @@ -3011,7 +3092,7 @@ size_t CypherParser::KU_DDLContext::getRuleIndex() const { CypherParser::KU_DDLContext* CypherParser::kU_DDL() { KU_DDLContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 32, CypherParser::RuleKU_DDL); + enterRule(_localctx, 34, CypherParser::RuleKU_DDL); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3021,47 +3102,47 @@ CypherParser::KU_DDLContext* CypherParser::kU_DDL() { exitRule(); }); try { - setState(626); + setState(635); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 65, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(620); + setState(629); kU_CreateNodeTable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(621); + setState(630); kU_CreateRelTable(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(622); + setState(631); kU_CreateRelTableGroup(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(623); + setState(632); kU_CreateRdfGraph(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(624); + setState(633); kU_DropTable(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(625); + setState(634); kU_AlterTable(); break; } @@ -3126,7 +3207,7 @@ size_t CypherParser::KU_CreateNodeTableContext::getRuleIndex() const { CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { KU_CreateNodeTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 34, CypherParser::RuleKU_CreateNodeTable); + enterRule(_localctx, 36, CypherParser::RuleKU_CreateNodeTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3138,70 +3219,70 @@ CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { }); try { enterOuterAlt(_localctx, 1); - setState(628); + setState(637); match(CypherParser::CREATE); - setState(629); + setState(638); match(CypherParser::SP); - setState(630); + setState(639); match(CypherParser::NODE); - setState(631); + setState(640); match(CypherParser::SP); - setState(632); + setState(641); match(CypherParser::TABLE); - setState(633); + setState(642); match(CypherParser::SP); - setState(634); + setState(643); oC_SchemaName(); - setState(636); + setState(645); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(635); + setState(644); match(CypherParser::SP); } - setState(638); + setState(647); match(CypherParser::T__1); - setState(640); + setState(649); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(639); + setState(648); match(CypherParser::SP); } - setState(642); + setState(651); kU_PropertyDefinitions(); - setState(644); + setState(653); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(643); + setState(652); match(CypherParser::SP); } - setState(646); + setState(655); match(CypherParser::T__3); - setState(648); + setState(657); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(647); + setState(656); match(CypherParser::SP); } - setState(650); + setState(659); kU_CreateNodeConstraint(); - setState(653); + setState(662); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(652); + setState(661); match(CypherParser::SP); } - setState(655); + setState(664); match(CypherParser::T__2); } @@ -3264,7 +3345,7 @@ size_t CypherParser::KU_CreateRelTableContext::getRuleIndex() const { CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { KU_CreateRelTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 36, CypherParser::RuleKU_CreateRelTable); + enterRule(_localctx, 38, CypherParser::RuleKU_CreateRelTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3276,71 +3357,71 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { }); try { enterOuterAlt(_localctx, 1); - setState(657); + setState(666); match(CypherParser::CREATE); - setState(658); + setState(667); match(CypherParser::SP); - setState(659); + setState(668); match(CypherParser::REL); - setState(660); + setState(669); match(CypherParser::SP); - setState(661); + setState(670); match(CypherParser::TABLE); - setState(662); + setState(671); match(CypherParser::SP); - setState(663); + setState(672); oC_SchemaName(); - setState(665); + setState(674); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(664); + setState(673); match(CypherParser::SP); } - setState(667); + setState(676); match(CypherParser::T__1); - setState(669); + setState(678); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(668); + setState(677); match(CypherParser::SP); } - setState(671); + setState(680); kU_RelTableConnection(); - setState(673); + setState(682); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(672); + setState(681); match(CypherParser::SP); } - setState(683); + setState(692); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 76, _ctx)) { case 1: { - setState(675); + setState(684); match(CypherParser::T__3); - setState(677); + setState(686); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(676); + setState(685); match(CypherParser::SP); } - setState(679); + setState(688); kU_PropertyDefinitions(); - setState(681); + setState(690); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(680); + setState(689); match(CypherParser::SP); } break; @@ -3349,33 +3430,33 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { default: break; } - setState(693); + setState(702); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__3) { - setState(685); + setState(694); match(CypherParser::T__3); - setState(687); + setState(696); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(686); + setState(695); match(CypherParser::SP); } - setState(689); + setState(698); oC_SymbolicName(); - setState(691); + setState(700); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(690); + setState(699); match(CypherParser::SP); } } - setState(695); + setState(704); match(CypherParser::T__2); } @@ -3446,7 +3527,7 @@ size_t CypherParser::KU_CreateRelTableGroupContext::getRuleIndex() const { CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGroup() { KU_CreateRelTableGroupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 38, CypherParser::RuleKU_CreateRelTableGroup); + enterRule(_localctx, 40, CypherParser::RuleKU_CreateRelTableGroup); size_t _la = 0; #if __cplusplus > 201703L @@ -3459,69 +3540,69 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou try { size_t alt; enterOuterAlt(_localctx, 1); - setState(697); + setState(706); match(CypherParser::CREATE); - setState(698); + setState(707); match(CypherParser::SP); - setState(699); + setState(708); match(CypherParser::REL); - setState(700); + setState(709); match(CypherParser::SP); - setState(701); + setState(710); match(CypherParser::TABLE); - setState(702); + setState(711); match(CypherParser::SP); - setState(703); + setState(712); match(CypherParser::GROUP); - setState(704); + setState(713); match(CypherParser::SP); - setState(705); + setState(714); oC_SchemaName(); - setState(707); + setState(716); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(706); + setState(715); match(CypherParser::SP); } - setState(709); + setState(718); match(CypherParser::T__1); - setState(711); + setState(720); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(710); + setState(719); match(CypherParser::SP); } - setState(713); + setState(722); kU_RelTableConnection(); - setState(715); + setState(724); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(714); + setState(723); match(CypherParser::SP); } - setState(722); + setState(731); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(717); + setState(726); match(CypherParser::T__3); - setState(719); + setState(728); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(718); + setState(727); match(CypherParser::SP); } - setState(721); + setState(730); kU_RelTableConnection(); break; } @@ -3529,41 +3610,41 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: throw NoViableAltException(this); } - setState(724); + setState(733); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 84, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(727); + setState(736); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(726); + setState(735); match(CypherParser::SP); } - setState(737); + setState(746); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 88, _ctx)) { case 1: { - setState(729); + setState(738); match(CypherParser::T__3); - setState(731); + setState(740); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(730); + setState(739); match(CypherParser::SP); } - setState(733); + setState(742); kU_PropertyDefinitions(); - setState(735); + setState(744); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(734); + setState(743); match(CypherParser::SP); } break; @@ -3572,33 +3653,33 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: break; } - setState(747); + setState(756); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__3) { - setState(739); + setState(748); match(CypherParser::T__3); - setState(741); + setState(750); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(740); + setState(749); match(CypherParser::SP); } - setState(743); + setState(752); oC_SymbolicName(); - setState(745); + setState(754); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(744); + setState(753); match(CypherParser::SP); } } - setState(749); + setState(758); match(CypherParser::T__2); } @@ -3649,7 +3730,7 @@ size_t CypherParser::KU_RelTableConnectionContext::getRuleIndex() const { CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection() { KU_RelTableConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 40, CypherParser::RuleKU_RelTableConnection); + enterRule(_localctx, 42, CypherParser::RuleKU_RelTableConnection); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3660,19 +3741,19 @@ CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection( }); try { enterOuterAlt(_localctx, 1); - setState(751); + setState(760); match(CypherParser::FROM); - setState(752); + setState(761); match(CypherParser::SP); - setState(753); + setState(762); oC_SchemaName(); - setState(754); + setState(763); match(CypherParser::SP); - setState(755); + setState(764); match(CypherParser::TO); - setState(756); + setState(765); match(CypherParser::SP); - setState(757); + setState(766); oC_SchemaName(); } @@ -3719,7 +3800,7 @@ size_t CypherParser::KU_CreateRdfGraphContext::getRuleIndex() const { CypherParser::KU_CreateRdfGraphContext* CypherParser::kU_CreateRdfGraph() { KU_CreateRdfGraphContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 42, CypherParser::RuleKU_CreateRdfGraph); + enterRule(_localctx, 44, CypherParser::RuleKU_CreateRdfGraph); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3730,15 +3811,15 @@ CypherParser::KU_CreateRdfGraphContext* CypherParser::kU_CreateRdfGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(759); + setState(768); match(CypherParser::CREATE); - setState(760); + setState(769); match(CypherParser::SP); - setState(761); + setState(770); match(CypherParser::RDFGRAPH); - setState(762); + setState(771); match(CypherParser::SP); - setState(763); + setState(772); oC_SchemaName(); } @@ -3789,7 +3870,7 @@ size_t CypherParser::KU_DropTableContext::getRuleIndex() const { CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { KU_DropTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 44, CypherParser::RuleKU_DropTable); + enterRule(_localctx, 46, CypherParser::RuleKU_DropTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3801,11 +3882,11 @@ CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { }); try { enterOuterAlt(_localctx, 1); - setState(765); + setState(774); match(CypherParser::DROP); - setState(766); + setState(775); match(CypherParser::SP); - setState(767); + setState(776); _la = _input->LA(1); if (!(_la == CypherParser::TABLE @@ -3816,9 +3897,9 @@ CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { _errHandler->reportMatch(this); consume(); } - setState(768); + setState(777); match(CypherParser::SP); - setState(769); + setState(778); oC_SchemaName(); } @@ -3869,7 +3950,7 @@ size_t CypherParser::KU_AlterTableContext::getRuleIndex() const { CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { KU_AlterTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 46, CypherParser::RuleKU_AlterTable); + enterRule(_localctx, 48, CypherParser::RuleKU_AlterTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3880,19 +3961,19 @@ CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { }); try { enterOuterAlt(_localctx, 1); - setState(771); + setState(780); match(CypherParser::ALTER); - setState(772); + setState(781); match(CypherParser::SP); - setState(773); + setState(782); match(CypherParser::TABLE); - setState(774); + setState(783); match(CypherParser::SP); - setState(775); + setState(784); oC_SchemaName(); - setState(776); + setState(785); match(CypherParser::SP); - setState(777); + setState(786); kU_AlterOptions(); } @@ -3935,7 +4016,7 @@ size_t CypherParser::KU_AlterOptionsContext::getRuleIndex() const { CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { KU_AlterOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 48, CypherParser::RuleKU_AlterOptions); + enterRule(_localctx, 50, CypherParser::RuleKU_AlterOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3945,33 +4026,33 @@ CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { exitRule(); }); try { - setState(783); + setState(792); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 92, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(779); + setState(788); kU_AddProperty(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(780); + setState(789); kU_DropProperty(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(781); + setState(790); kU_RenameTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(782); + setState(791); kU_RenameProperty(); break; } @@ -4032,7 +4113,7 @@ size_t CypherParser::KU_AddPropertyContext::getRuleIndex() const { CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { KU_AddPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 50, CypherParser::RuleKU_AddProperty); + enterRule(_localctx, 52, CypherParser::RuleKU_AddProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4043,28 +4124,28 @@ CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(785); + setState(794); match(CypherParser::ADD); - setState(786); + setState(795); match(CypherParser::SP); - setState(787); + setState(796); oC_PropertyKeyName(); - setState(788); + setState(797); match(CypherParser::SP); - setState(789); + setState(798); kU_DataType(0); - setState(794); + setState(803); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 93, _ctx)) { case 1: { - setState(790); + setState(799); match(CypherParser::SP); - setState(791); + setState(800); match(CypherParser::DEFAULT); - setState(792); + setState(801); match(CypherParser::SP); - setState(793); + setState(802); oC_Expression(); break; } @@ -4109,7 +4190,7 @@ size_t CypherParser::KU_DropPropertyContext::getRuleIndex() const { CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { KU_DropPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, CypherParser::RuleKU_DropProperty); + enterRule(_localctx, 54, CypherParser::RuleKU_DropProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4120,11 +4201,11 @@ CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(796); + setState(805); match(CypherParser::DROP); - setState(797); + setState(806); match(CypherParser::SP); - setState(798); + setState(807); oC_PropertyKeyName(); } @@ -4171,7 +4252,7 @@ size_t CypherParser::KU_RenameTableContext::getRuleIndex() const { CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { KU_RenameTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, CypherParser::RuleKU_RenameTable); + enterRule(_localctx, 56, CypherParser::RuleKU_RenameTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4182,15 +4263,15 @@ CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { }); try { enterOuterAlt(_localctx, 1); - setState(800); + setState(809); match(CypherParser::RENAME); - setState(801); + setState(810); match(CypherParser::SP); - setState(802); + setState(811); match(CypherParser::TO); - setState(803); + setState(812); match(CypherParser::SP); - setState(804); + setState(813); oC_SchemaName(); } @@ -4241,7 +4322,7 @@ size_t CypherParser::KU_RenamePropertyContext::getRuleIndex() const { CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { KU_RenamePropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, CypherParser::RuleKU_RenameProperty); + enterRule(_localctx, 58, CypherParser::RuleKU_RenameProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4252,19 +4333,19 @@ CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(806); + setState(815); match(CypherParser::RENAME); - setState(807); + setState(816); match(CypherParser::SP); - setState(808); + setState(817); oC_PropertyKeyName(); - setState(809); + setState(818); match(CypherParser::SP); - setState(810); + setState(819); match(CypherParser::TO); - setState(811); + setState(820); match(CypherParser::SP); - setState(812); + setState(821); oC_PropertyKeyName(); } @@ -4307,7 +4388,7 @@ size_t CypherParser::KU_PropertyDefinitionsContext::getRuleIndex() const { CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinitions() { KU_PropertyDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, CypherParser::RuleKU_PropertyDefinitions); + enterRule(_localctx, 60, CypherParser::RuleKU_PropertyDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -4320,35 +4401,35 @@ CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinition try { size_t alt; enterOuterAlt(_localctx, 1); - setState(814); + setState(823); kU_PropertyDefinition(); - setState(825); + setState(834); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 96, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(816); + setState(825); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(815); + setState(824); match(CypherParser::SP); } - setState(818); + setState(827); match(CypherParser::T__3); - setState(820); + setState(829); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(819); + setState(828); match(CypherParser::SP); } - setState(822); + setState(831); kU_PropertyDefinition(); } - setState(827); + setState(836); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 96, _ctx); } @@ -4389,7 +4470,7 @@ size_t CypherParser::KU_PropertyDefinitionContext::getRuleIndex() const { CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition() { KU_PropertyDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, CypherParser::RuleKU_PropertyDefinition); + enterRule(_localctx, 62, CypherParser::RuleKU_PropertyDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4400,11 +4481,11 @@ CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(828); + setState(837); oC_PropertyKeyName(); - setState(829); + setState(838); match(CypherParser::SP); - setState(830); + setState(839); kU_DataType(0); } @@ -4451,7 +4532,7 @@ size_t CypherParser::KU_CreateNodeConstraintContext::getRuleIndex() const { CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstraint() { KU_CreateNodeConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, CypherParser::RuleKU_CreateNodeConstraint); + enterRule(_localctx, 64, CypherParser::RuleKU_CreateNodeConstraint); size_t _la = 0; #if __cplusplus > 201703L @@ -4463,41 +4544,41 @@ CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstra }); try { enterOuterAlt(_localctx, 1); - setState(832); + setState(841); match(CypherParser::PRIMARY); - setState(833); + setState(842); match(CypherParser::SP); - setState(834); + setState(843); match(CypherParser::KEY); - setState(836); + setState(845); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(835); + setState(844); match(CypherParser::SP); } - setState(838); + setState(847); match(CypherParser::T__1); - setState(840); + setState(849); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(839); + setState(848); match(CypherParser::SP); } - setState(842); + setState(851); oC_PropertyKeyName(); - setState(844); + setState(853); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(843); + setState(852); match(CypherParser::SP); } - setState(846); + setState(855); match(CypherParser::T__2); } @@ -4565,8 +4646,8 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { CypherParser::KU_DataTypeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::KU_DataTypeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 64; - enterRecursionRule(_localctx, 64, CypherParser::RuleKU_DataType, precedence); + size_t startState = 66; + enterRecursionRule(_localctx, 66, CypherParser::RuleKU_DataType, precedence); size_t _la = 0; @@ -4580,139 +4661,139 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(900); + setState(909); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 111, _ctx)) { case 1: { - setState(849); + setState(858); oC_SymbolicName(); break; } case 2: { - setState(850); + setState(859); match(CypherParser::UNION); - setState(852); + setState(861); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(851); + setState(860); match(CypherParser::SP); } - setState(854); + setState(863); match(CypherParser::T__1); - setState(856); + setState(865); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(855); + setState(864); match(CypherParser::SP); } - setState(858); + setState(867); kU_PropertyDefinitions(); - setState(860); + setState(869); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(859); + setState(868); match(CypherParser::SP); } - setState(862); + setState(871); match(CypherParser::T__2); break; } case 3: { - setState(864); + setState(873); oC_SymbolicName(); - setState(866); + setState(875); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(865); + setState(874); match(CypherParser::SP); } - setState(868); + setState(877); match(CypherParser::T__1); - setState(870); + setState(879); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(869); + setState(878); match(CypherParser::SP); } - setState(872); + setState(881); kU_PropertyDefinitions(); - setState(874); + setState(883); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(873); + setState(882); match(CypherParser::SP); } - setState(876); + setState(885); match(CypherParser::T__2); break; } case 4: { - setState(878); + setState(887); oC_SymbolicName(); - setState(880); + setState(889); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(879); + setState(888); match(CypherParser::SP); } - setState(882); + setState(891); match(CypherParser::T__1); - setState(884); + setState(893); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(883); + setState(892); match(CypherParser::SP); } - setState(886); + setState(895); kU_DataType(0); - setState(888); + setState(897); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(887); + setState(896); match(CypherParser::SP); } - setState(890); + setState(899); match(CypherParser::T__3); - setState(892); + setState(901); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(891); + setState(900); match(CypherParser::SP); } - setState(894); + setState(903); kU_DataType(0); - setState(896); + setState(905); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(895); + setState(904); match(CypherParser::SP); } - setState(898); + setState(907); match(CypherParser::T__2); break; } @@ -4721,7 +4802,7 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(906); + setState(915); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 112, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { @@ -4731,13 +4812,13 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleKU_DataType); - setState(902); + setState(911); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(903); + setState(912); kU_ListIdentifiers(); } - setState(908); + setState(917); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 112, _ctx); } @@ -4772,7 +4853,7 @@ size_t CypherParser::KU_ListIdentifiersContext::getRuleIndex() const { CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { KU_ListIdentifiersContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, CypherParser::RuleKU_ListIdentifiers); + enterRule(_localctx, 68, CypherParser::RuleKU_ListIdentifiers); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4784,17 +4865,17 @@ CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(909); + setState(918); kU_ListIdentifier(); - setState(913); + setState(922); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 113, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(910); + setState(919); kU_ListIdentifier(); } - setState(915); + setState(924); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 113, _ctx); } @@ -4827,7 +4908,7 @@ size_t CypherParser::KU_ListIdentifierContext::getRuleIndex() const { CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { KU_ListIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, CypherParser::RuleKU_ListIdentifier); + enterRule(_localctx, 70, CypherParser::RuleKU_ListIdentifier); size_t _la = 0; #if __cplusplus > 201703L @@ -4839,17 +4920,17 @@ CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { }); try { enterOuterAlt(_localctx, 1); - setState(916); + setState(925); match(CypherParser::T__5); - setState(918); + setState(927); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(917); + setState(926); oC_IntegerLiteral(); } - setState(920); + setState(929); match(CypherParser::T__6); } @@ -4884,7 +4965,7 @@ size_t CypherParser::OC_AnyCypherOptionContext::getRuleIndex() const { CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { OC_AnyCypherOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, CypherParser::RuleOC_AnyCypherOption); + enterRule(_localctx, 72, CypherParser::RuleOC_AnyCypherOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4894,19 +4975,19 @@ CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { exitRule(); }); try { - setState(924); + setState(933); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::EXPLAIN: { enterOuterAlt(_localctx, 1); - setState(922); + setState(931); oC_Explain(); break; } case CypherParser::PROFILE: { enterOuterAlt(_localctx, 2); - setState(923); + setState(932); oC_Profile(); break; } @@ -4943,7 +5024,7 @@ size_t CypherParser::OC_ExplainContext::getRuleIndex() const { CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { OC_ExplainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 72, CypherParser::RuleOC_Explain); + enterRule(_localctx, 74, CypherParser::RuleOC_Explain); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4954,7 +5035,7 @@ CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { }); try { enterOuterAlt(_localctx, 1); - setState(926); + setState(935); match(CypherParser::EXPLAIN); } @@ -4985,7 +5066,7 @@ size_t CypherParser::OC_ProfileContext::getRuleIndex() const { CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { OC_ProfileContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, CypherParser::RuleOC_Profile); + enterRule(_localctx, 76, CypherParser::RuleOC_Profile); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4996,7 +5077,7 @@ CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { }); try { enterOuterAlt(_localctx, 1); - setState(928); + setState(937); match(CypherParser::PROFILE); } @@ -5063,7 +5144,7 @@ size_t CypherParser::KU_TransactionContext::getRuleIndex() const { CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { KU_TransactionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, CypherParser::RuleKU_Transaction); + enterRule(_localctx, 78, CypherParser::RuleKU_Transaction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5073,63 +5154,63 @@ CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { exitRule(); }); try { - setState(944); + setState(953); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 116, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(930); + setState(939); match(CypherParser::BEGIN); - setState(931); + setState(940); match(CypherParser::SP); - setState(932); + setState(941); match(CypherParser::TRANSACTION); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(933); + setState(942); match(CypherParser::BEGIN); - setState(934); + setState(943); match(CypherParser::SP); - setState(935); + setState(944); match(CypherParser::TRANSACTION); - setState(936); + setState(945); match(CypherParser::SP); - setState(937); + setState(946); match(CypherParser::READ); - setState(938); + setState(947); match(CypherParser::SP); - setState(939); + setState(948); match(CypherParser::ONLY); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(940); + setState(949); match(CypherParser::COMMIT); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(941); + setState(950); match(CypherParser::COMMIT_SKIP_CHECKPOINT); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(942); + setState(951); match(CypherParser::ROLLBACK); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(943); + setState(952); match(CypherParser::ROLLBACK_SKIP_CHECKPOINT); break; } @@ -5170,7 +5251,7 @@ size_t CypherParser::KU_ExtensionContext::getRuleIndex() const { CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { KU_ExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, CypherParser::RuleKU_Extension); + enterRule(_localctx, 80, CypherParser::RuleKU_Extension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5180,19 +5261,19 @@ CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { exitRule(); }); try { - setState(948); + setState(957); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::LOAD: { enterOuterAlt(_localctx, 1); - setState(946); + setState(955); kU_LoadExtension(); break; } case CypherParser::INSTALL: { enterOuterAlt(_localctx, 2); - setState(947); + setState(956); kU_InstallExtension(); break; } @@ -5249,7 +5330,7 @@ size_t CypherParser::KU_LoadExtensionContext::getRuleIndex() const { CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { KU_LoadExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, CypherParser::RuleKU_LoadExtension); + enterRule(_localctx, 82, CypherParser::RuleKU_LoadExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5260,25 +5341,26 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(950); + setState(959); match(CypherParser::LOAD); - setState(951); + setState(960); match(CypherParser::SP); - setState(952); + setState(961); match(CypherParser::EXTENSION); - setState(953); + setState(962); match(CypherParser::SP); - setState(956); + setState(965); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::StringLiteral: { - setState(954); + setState(963); match(CypherParser::StringLiteral); break; } case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -5289,7 +5371,7 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(955); + setState(964); oC_Variable(); break; } @@ -5334,7 +5416,7 @@ size_t CypherParser::KU_InstallExtensionContext::getRuleIndex() const { CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { KU_InstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, CypherParser::RuleKU_InstallExtension); + enterRule(_localctx, 84, CypherParser::RuleKU_InstallExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5345,11 +5427,11 @@ CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(958); + setState(967); match(CypherParser::INSTALL); - setState(959); + setState(968); match(CypherParser::SP); - setState(960); + setState(969); oC_Variable(); } @@ -5380,7 +5462,7 @@ size_t CypherParser::OC_QueryContext::getRuleIndex() const { CypherParser::OC_QueryContext* CypherParser::oC_Query() { OC_QueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, CypherParser::RuleOC_Query); + enterRule(_localctx, 86, CypherParser::RuleOC_Query); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5391,7 +5473,7 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { }); try { enterOuterAlt(_localctx, 1); - setState(962); + setState(971); oC_RegularQuery(); } @@ -5446,7 +5528,7 @@ size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, CypherParser::RuleOC_RegularQuery); + enterRule(_localctx, 88, CypherParser::RuleOC_RegularQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -5458,30 +5540,30 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { }); try { size_t alt; - setState(985); + setState(994); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 123, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(964); + setState(973); oC_SingleQuery(); - setState(971); + setState(980); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 120, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(966); + setState(975); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(965); + setState(974); match(CypherParser::SP); } - setState(968); + setState(977); oC_Union(); } - setState(973); + setState(982); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 120, _ctx); } @@ -5490,20 +5572,20 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { case 2: { enterOuterAlt(_localctx, 2); - setState(978); + setState(987); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(974); + setState(983); oC_Return(); - setState(976); + setState(985); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(975); + setState(984); match(CypherParser::SP); } break; @@ -5512,11 +5594,11 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { default: throw NoViableAltException(this); } - setState(980); + setState(989); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 122, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(982); + setState(991); oC_SingleQuery(); notifyReturnNotAtEnd(_localctx->start); break; @@ -5570,7 +5652,7 @@ size_t CypherParser::OC_UnionContext::getRuleIndex() const { CypherParser::OC_UnionContext* CypherParser::oC_Union() { OC_UnionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, CypherParser::RuleOC_Union); + enterRule(_localctx, 90, CypherParser::RuleOC_Union); size_t _la = 0; #if __cplusplus > 201703L @@ -5581,43 +5663,43 @@ CypherParser::OC_UnionContext* CypherParser::oC_Union() { exitRule(); }); try { - setState(999); + setState(1008); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 126, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(987); + setState(996); match(CypherParser::UNION); - setState(988); + setState(997); match(CypherParser::SP); - setState(989); + setState(998); match(CypherParser::ALL); - setState(991); + setState(1000); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(990); + setState(999); match(CypherParser::SP); } - setState(993); + setState(1002); oC_SingleQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(994); + setState(1003); match(CypherParser::UNION); - setState(996); + setState(1005); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(995); + setState(1004); match(CypherParser::SP); } - setState(998); + setState(1007); oC_SingleQuery(); break; } @@ -5658,7 +5740,7 @@ size_t CypherParser::OC_SingleQueryContext::getRuleIndex() const { CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { OC_SingleQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, CypherParser::RuleOC_SingleQuery); + enterRule(_localctx, 92, CypherParser::RuleOC_SingleQuery); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5668,19 +5750,19 @@ CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { exitRule(); }); try { - setState(1003); + setState(1012); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 127, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1001); + setState(1010); oC_SinglePartQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1002); + setState(1011); oC_MultiPartQuery(); break; } @@ -5741,7 +5823,7 @@ size_t CypherParser::OC_SinglePartQueryContext::getRuleIndex() const { CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { OC_SinglePartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, CypherParser::RuleOC_SinglePartQuery); + enterRule(_localctx, 94, CypherParser::RuleOC_SinglePartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -5753,92 +5835,92 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { }); try { size_t alt; - setState(1050); + setState(1059); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 138, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1011); + setState(1020); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 46) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 46)) & 3985729650689) != 0)) { - setState(1005); + ((1ULL << (_la - 46)) & 7971459301377) != 0)) { + setState(1014); oC_ReadingClause(); - setState(1007); + setState(1016); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1006); + setState(1015); match(CypherParser::SP); } - setState(1013); + setState(1022); _errHandler->sync(this); _la = _input->LA(1); } - setState(1014); + setState(1023); oC_Return(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1021); + setState(1030); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 46) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 46)) & 3985729650689) != 0)) { - setState(1015); + ((1ULL << (_la - 46)) & 7971459301377) != 0)) { + setState(1024); oC_ReadingClause(); - setState(1017); + setState(1026); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1016); + setState(1025); match(CypherParser::SP); } - setState(1023); + setState(1032); _errHandler->sync(this); _la = _input->LA(1); } - setState(1024); + setState(1033); oC_UpdatingClause(); - setState(1031); + setState(1040); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 133, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1026); + setState(1035); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1025); + setState(1034); match(CypherParser::SP); } - setState(1028); + setState(1037); oC_UpdatingClause(); } - setState(1033); + setState(1042); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 133, _ctx); } - setState(1038); + setState(1047); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 135, _ctx)) { case 1: { - setState(1035); + setState(1044); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1034); + setState(1043); match(CypherParser::SP); } - setState(1037); + setState(1046); oC_Return(); break; } @@ -5851,18 +5933,18 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { case 3: { enterOuterAlt(_localctx, 3); - setState(1044); + setState(1053); _errHandler->sync(this); _la = _input->LA(1); do { - setState(1040); + setState(1049); oC_ReadingClause(); - setState(1042); + setState(1051); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 136, _ctx)) { case 1: { - setState(1041); + setState(1050); match(CypherParser::SP); break; } @@ -5870,11 +5952,11 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { default: break; } - setState(1046); + setState(1055); _errHandler->sync(this); _la = _input->LA(1); } while (((((_la - 46) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 46)) & 3985729650689) != 0)); + ((1ULL << (_la - 46)) & 7971459301377) != 0)); notifyQueryNotConcludeWithReturn(_localctx->start); break; } @@ -5927,7 +6009,7 @@ size_t CypherParser::OC_MultiPartQueryContext::getRuleIndex() const { CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { OC_MultiPartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, CypherParser::RuleOC_MultiPartQuery); + enterRule(_localctx, 96, CypherParser::RuleOC_MultiPartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -5940,20 +6022,20 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1056); + setState(1065); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1052); + setState(1061); kU_QueryPart(); - setState(1054); + setState(1063); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1053); + setState(1062); match(CypherParser::SP); } break; @@ -5962,11 +6044,11 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { default: throw NoViableAltException(this); } - setState(1058); + setState(1067); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 140, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1060); + setState(1069); oC_SinglePartQuery(); } @@ -6021,7 +6103,7 @@ size_t CypherParser::KU_QueryPartContext::getRuleIndex() const { CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { KU_QueryPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, CypherParser::RuleKU_QueryPart); + enterRule(_localctx, 98, CypherParser::RuleKU_QueryPart); size_t _la = 0; #if __cplusplus > 201703L @@ -6033,45 +6115,45 @@ CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { }); try { enterOuterAlt(_localctx, 1); - setState(1068); + setState(1077); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 46) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 46)) & 3985729650689) != 0)) { - setState(1062); + ((1ULL << (_la - 46)) & 7971459301377) != 0)) { + setState(1071); oC_ReadingClause(); - setState(1064); + setState(1073); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1063); + setState(1072); match(CypherParser::SP); } - setState(1070); + setState(1079); _errHandler->sync(this); _la = _input->LA(1); } - setState(1077); + setState(1086); _errHandler->sync(this); _la = _input->LA(1); - while (((((_la - 88) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 88)) & 59) != 0)) { - setState(1071); + while (((((_la - 89) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 89)) & 59) != 0)) { + setState(1080); oC_UpdatingClause(); - setState(1073); + setState(1082); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1072); + setState(1081); match(CypherParser::SP); } - setState(1079); + setState(1088); _errHandler->sync(this); _la = _input->LA(1); } - setState(1080); + setState(1089); oC_With(); } @@ -6114,7 +6196,7 @@ size_t CypherParser::OC_UpdatingClauseContext::getRuleIndex() const { CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { OC_UpdatingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, CypherParser::RuleOC_UpdatingClause); + enterRule(_localctx, 100, CypherParser::RuleOC_UpdatingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6124,26 +6206,26 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { exitRule(); }); try { - setState(1086); + setState(1095); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::CREATE: { enterOuterAlt(_localctx, 1); - setState(1082); + setState(1091); oC_Create(); break; } case CypherParser::MERGE: { enterOuterAlt(_localctx, 2); - setState(1083); + setState(1092); oC_Merge(); break; } case CypherParser::SET: { enterOuterAlt(_localctx, 3); - setState(1084); + setState(1093); oC_Set(); break; } @@ -6151,7 +6233,7 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { case CypherParser::DETACH: case CypherParser::DELETE: { enterOuterAlt(_localctx, 4); - setState(1085); + setState(1094); oC_Delete(); break; } @@ -6200,7 +6282,7 @@ size_t CypherParser::OC_ReadingClauseContext::getRuleIndex() const { CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { OC_ReadingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, CypherParser::RuleOC_ReadingClause); + enterRule(_localctx, 102, CypherParser::RuleOC_ReadingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6210,34 +6292,34 @@ CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { exitRule(); }); try { - setState(1092); + setState(1101); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::OPTIONAL: case CypherParser::MATCH: { enterOuterAlt(_localctx, 1); - setState(1088); + setState(1097); oC_Match(); break; } case CypherParser::UNWIND: { enterOuterAlt(_localctx, 2); - setState(1089); + setState(1098); oC_Unwind(); break; } case CypherParser::CALL: { enterOuterAlt(_localctx, 3); - setState(1090); + setState(1099); kU_InQueryCall(); break; } case CypherParser::LOAD: { enterOuterAlt(_localctx, 4); - setState(1091); + setState(1100); kU_LoadFrom(); break; } @@ -6314,7 +6396,7 @@ size_t CypherParser::KU_LoadFromContext::getRuleIndex() const { CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { KU_LoadFromContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, CypherParser::RuleKU_LoadFrom); + enterRule(_localctx, 104, CypherParser::RuleKU_LoadFrom); size_t _la = 0; #if __cplusplus > 201703L @@ -6326,50 +6408,50 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(1094); + setState(1103); match(CypherParser::LOAD); - setState(1112); + setState(1121); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 150, _ctx)) { case 1: { - setState(1095); + setState(1104); match(CypherParser::SP); - setState(1096); + setState(1105); match(CypherParser::WITH); - setState(1097); + setState(1106); match(CypherParser::SP); - setState(1098); + setState(1107); match(CypherParser::HEADERS); - setState(1100); + setState(1109); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1099); + setState(1108); match(CypherParser::SP); } - setState(1102); + setState(1111); match(CypherParser::T__1); - setState(1104); + setState(1113); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1103); + setState(1112); match(CypherParser::SP); } - setState(1106); + setState(1115); kU_PropertyDefinitions(); - setState(1108); + setState(1117); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1107); + setState(1116); match(CypherParser::SP); } - setState(1110); + setState(1119); match(CypherParser::T__2); break; } @@ -6377,54 +6459,54 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1114); + setState(1123); match(CypherParser::SP); - setState(1115); + setState(1124); match(CypherParser::FROM); - setState(1116); + setState(1125); match(CypherParser::SP); - setState(1134); + setState(1143); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__5: case CypherParser::GLOB: case CypherParser::StringLiteral: { - setState(1117); + setState(1126); kU_FilePaths(); - setState(1131); + setState(1140); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 154, _ctx)) { case 1: { - setState(1119); + setState(1128); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1118); + setState(1127); match(CypherParser::SP); } - setState(1121); + setState(1130); match(CypherParser::T__1); - setState(1123); + setState(1132); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1122); + setState(1131); match(CypherParser::SP); } - setState(1125); + setState(1134); kU_ParsingOptions(); - setState(1127); + setState(1136); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1126); + setState(1135); match(CypherParser::SP); } - setState(1129); + setState(1138); match(CypherParser::T__2); break; } @@ -6437,6 +6519,7 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -6447,7 +6530,7 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1133); + setState(1142); oC_Variable(); break; } @@ -6455,20 +6538,20 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: throw NoViableAltException(this); } - setState(1140); + setState(1149); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 157, _ctx)) { case 1: { - setState(1137); + setState(1146); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1136); + setState(1145); match(CypherParser::SP); } - setState(1139); + setState(1148); oC_Where(); break; } @@ -6521,7 +6604,7 @@ size_t CypherParser::KU_InQueryCallContext::getRuleIndex() const { CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { KU_InQueryCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, CypherParser::RuleKU_InQueryCall); + enterRule(_localctx, 106, CypherParser::RuleKU_InQueryCall); size_t _la = 0; #if __cplusplus > 201703L @@ -6533,26 +6616,26 @@ CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { }); try { enterOuterAlt(_localctx, 1); - setState(1142); + setState(1151); match(CypherParser::CALL); - setState(1143); + setState(1152); match(CypherParser::SP); - setState(1144); + setState(1153); oC_FunctionInvocation(); - setState(1149); + setState(1158); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 159, _ctx)) { case 1: { - setState(1146); + setState(1155); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1145); + setState(1154); match(CypherParser::SP); } - setState(1148); + setState(1157); oC_Where(); break; } @@ -6609,7 +6692,7 @@ size_t CypherParser::OC_MatchContext::getRuleIndex() const { CypherParser::OC_MatchContext* CypherParser::oC_Match() { OC_MatchContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, CypherParser::RuleOC_Match); + enterRule(_localctx, 108, CypherParser::RuleOC_Match); size_t _la = 0; #if __cplusplus > 201703L @@ -6621,42 +6704,42 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { }); try { enterOuterAlt(_localctx, 1); - setState(1153); + setState(1162); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::OPTIONAL) { - setState(1151); + setState(1160); match(CypherParser::OPTIONAL); - setState(1152); + setState(1161); match(CypherParser::SP); } - setState(1155); + setState(1164); match(CypherParser::MATCH); - setState(1157); + setState(1166); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1156); + setState(1165); match(CypherParser::SP); } - setState(1159); + setState(1168); oC_Pattern(); - setState(1164); + setState(1173); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 163, _ctx)) { case 1: { - setState(1161); + setState(1170); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1160); + setState(1169); match(CypherParser::SP); } - setState(1163); + setState(1172); oC_Where(); break; } @@ -6713,7 +6796,7 @@ size_t CypherParser::OC_UnwindContext::getRuleIndex() const { CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { OC_UnwindContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, CypherParser::RuleOC_Unwind); + enterRule(_localctx, 110, CypherParser::RuleOC_Unwind); size_t _la = 0; #if __cplusplus > 201703L @@ -6725,25 +6808,25 @@ CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { }); try { enterOuterAlt(_localctx, 1); - setState(1166); + setState(1175); match(CypherParser::UNWIND); - setState(1168); + setState(1177); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1167); + setState(1176); match(CypherParser::SP); } - setState(1170); + setState(1179); oC_Expression(); - setState(1171); + setState(1180); match(CypherParser::SP); - setState(1172); + setState(1181); match(CypherParser::AS); - setState(1173); + setState(1182); match(CypherParser::SP); - setState(1174); + setState(1183); oC_Variable(); } @@ -6782,7 +6865,7 @@ size_t CypherParser::OC_CreateContext::getRuleIndex() const { CypherParser::OC_CreateContext* CypherParser::oC_Create() { OC_CreateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, CypherParser::RuleOC_Create); + enterRule(_localctx, 112, CypherParser::RuleOC_Create); size_t _la = 0; #if __cplusplus > 201703L @@ -6794,17 +6877,17 @@ CypherParser::OC_CreateContext* CypherParser::oC_Create() { }); try { enterOuterAlt(_localctx, 1); - setState(1176); + setState(1185); match(CypherParser::CREATE); - setState(1178); + setState(1187); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1177); + setState(1186); match(CypherParser::SP); } - setState(1180); + setState(1189); oC_Pattern(); } @@ -6855,7 +6938,7 @@ size_t CypherParser::OC_MergeContext::getRuleIndex() const { CypherParser::OC_MergeContext* CypherParser::oC_Merge() { OC_MergeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, CypherParser::RuleOC_Merge); + enterRule(_localctx, 114, CypherParser::RuleOC_Merge); size_t _la = 0; #if __cplusplus > 201703L @@ -6868,29 +6951,29 @@ CypherParser::OC_MergeContext* CypherParser::oC_Merge() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1182); + setState(1191); match(CypherParser::MERGE); - setState(1184); + setState(1193); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1183); + setState(1192); match(CypherParser::SP); } - setState(1186); + setState(1195); oC_Pattern(); - setState(1191); + setState(1200); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1187); + setState(1196); match(CypherParser::SP); - setState(1188); + setState(1197); oC_MergeAction(); } - setState(1193); + setState(1202); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); } @@ -6943,7 +7026,7 @@ size_t CypherParser::OC_MergeActionContext::getRuleIndex() const { CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { OC_MergeActionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, CypherParser::RuleOC_MergeAction); + enterRule(_localctx, 116, CypherParser::RuleOC_MergeAction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6953,35 +7036,35 @@ CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { exitRule(); }); try { - setState(1204); + setState(1213); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 168, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1194); + setState(1203); match(CypherParser::ON); - setState(1195); + setState(1204); match(CypherParser::SP); - setState(1196); + setState(1205); match(CypherParser::MATCH); - setState(1197); + setState(1206); match(CypherParser::SP); - setState(1198); + setState(1207); oC_Set(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1199); + setState(1208); match(CypherParser::ON); - setState(1200); + setState(1209); match(CypherParser::SP); - setState(1201); + setState(1210); match(CypherParser::CREATE); - setState(1202); + setState(1211); match(CypherParser::SP); - setState(1203); + setState(1212); oC_Set(); break; } @@ -7034,7 +7117,7 @@ size_t CypherParser::OC_SetContext::getRuleIndex() const { CypherParser::OC_SetContext* CypherParser::oC_Set() { OC_SetContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, CypherParser::RuleOC_Set); + enterRule(_localctx, 118, CypherParser::RuleOC_Set); size_t _la = 0; #if __cplusplus > 201703L @@ -7047,45 +7130,45 @@ CypherParser::OC_SetContext* CypherParser::oC_Set() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1206); + setState(1215); match(CypherParser::SET); - setState(1208); + setState(1217); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1207); + setState(1216); match(CypherParser::SP); } - setState(1210); + setState(1219); oC_SetItem(); - setState(1221); + setState(1230); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1212); + setState(1221); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1211); + setState(1220); match(CypherParser::SP); } - setState(1214); + setState(1223); match(CypherParser::T__3); - setState(1216); + setState(1225); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1215); + setState(1224); match(CypherParser::SP); } - setState(1218); + setState(1227); oC_SetItem(); } - setState(1223); + setState(1232); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); } @@ -7130,7 +7213,7 @@ size_t CypherParser::OC_SetItemContext::getRuleIndex() const { CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { OC_SetItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, CypherParser::RuleOC_SetItem); + enterRule(_localctx, 120, CypherParser::RuleOC_SetItem); size_t _la = 0; #if __cplusplus > 201703L @@ -7142,27 +7225,27 @@ CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1224); + setState(1233); oC_PropertyExpression(); - setState(1226); + setState(1235); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1225); + setState(1234); match(CypherParser::SP); } - setState(1228); + setState(1237); match(CypherParser::T__4); - setState(1230); + setState(1239); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1229); + setState(1238); match(CypherParser::SP); } - setState(1232); + setState(1241); oC_Expression(); } @@ -7213,7 +7296,7 @@ size_t CypherParser::OC_DeleteContext::getRuleIndex() const { CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { OC_DeleteContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, CypherParser::RuleOC_Delete); + enterRule(_localctx, 122, CypherParser::RuleOC_Delete); size_t _la = 0; #if __cplusplus > 201703L @@ -7226,55 +7309,55 @@ CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1236); + setState(1245); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DETACH) { - setState(1234); + setState(1243); match(CypherParser::DETACH); - setState(1235); + setState(1244); match(CypherParser::SP); } - setState(1238); + setState(1247); match(CypherParser::DELETE); - setState(1240); + setState(1249); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1239); + setState(1248); match(CypherParser::SP); } - setState(1242); + setState(1251); oC_Expression(); - setState(1253); + setState(1262); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 179, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1244); + setState(1253); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1243); + setState(1252); match(CypherParser::SP); } - setState(1246); + setState(1255); match(CypherParser::T__3); - setState(1248); + setState(1257); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1247); + setState(1256); match(CypherParser::SP); } - setState(1250); + setState(1259); oC_Expression(); } - setState(1255); + setState(1264); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 179, _ctx); } @@ -7319,7 +7402,7 @@ size_t CypherParser::OC_WithContext::getRuleIndex() const { CypherParser::OC_WithContext* CypherParser::oC_With() { OC_WithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, CypherParser::RuleOC_With); + enterRule(_localctx, 124, CypherParser::RuleOC_With); size_t _la = 0; #if __cplusplus > 201703L @@ -7331,24 +7414,24 @@ CypherParser::OC_WithContext* CypherParser::oC_With() { }); try { enterOuterAlt(_localctx, 1); - setState(1256); + setState(1265); match(CypherParser::WITH); - setState(1257); + setState(1266); oC_ProjectionBody(); - setState(1262); + setState(1271); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 181, _ctx)) { case 1: { - setState(1259); + setState(1268); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1258); + setState(1267); match(CypherParser::SP); } - setState(1261); + setState(1270); oC_Where(); break; } @@ -7389,7 +7472,7 @@ size_t CypherParser::OC_ReturnContext::getRuleIndex() const { CypherParser::OC_ReturnContext* CypherParser::oC_Return() { OC_ReturnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, CypherParser::RuleOC_Return); + enterRule(_localctx, 126, CypherParser::RuleOC_Return); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7400,9 +7483,9 @@ CypherParser::OC_ReturnContext* CypherParser::oC_Return() { }); try { enterOuterAlt(_localctx, 1); - setState(1264); + setState(1273); match(CypherParser::RETURN); - setState(1265); + setState(1274); oC_ProjectionBody(); } @@ -7457,7 +7540,7 @@ size_t CypherParser::OC_ProjectionBodyContext::getRuleIndex() const { CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { OC_ProjectionBodyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, CypherParser::RuleOC_ProjectionBody); + enterRule(_localctx, 128, CypherParser::RuleOC_ProjectionBody); size_t _la = 0; #if __cplusplus > 201703L @@ -7469,20 +7552,20 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { }); try { enterOuterAlt(_localctx, 1); - setState(1271); + setState(1280); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 183, _ctx)) { case 1: { - setState(1268); + setState(1277); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1267); + setState(1276); match(CypherParser::SP); } - setState(1270); + setState(1279); match(CypherParser::DISTINCT); break; } @@ -7490,18 +7573,18 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1273); + setState(1282); match(CypherParser::SP); - setState(1274); + setState(1283); oC_ProjectionItems(); - setState(1277); + setState(1286); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 184, _ctx)) { case 1: { - setState(1275); + setState(1284); match(CypherParser::SP); - setState(1276); + setState(1285); oC_Order(); break; } @@ -7509,14 +7592,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1281); + setState(1290); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 185, _ctx)) { case 1: { - setState(1279); + setState(1288); match(CypherParser::SP); - setState(1280); + setState(1289); oC_Skip(); break; } @@ -7524,14 +7607,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1285); + setState(1294); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 186, _ctx)) { case 1: { - setState(1283); + setState(1292); match(CypherParser::SP); - setState(1284); + setState(1293); oC_Limit(); break; } @@ -7584,7 +7667,7 @@ size_t CypherParser::OC_ProjectionItemsContext::getRuleIndex() const { CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { OC_ProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, CypherParser::RuleOC_ProjectionItems); + enterRule(_localctx, 130, CypherParser::RuleOC_ProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -7596,40 +7679,40 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { }); try { size_t alt; - setState(1315); + setState(1324); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::STAR: { enterOuterAlt(_localctx, 1); - setState(1287); + setState(1296); match(CypherParser::STAR); - setState(1298); + setState(1307); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 189, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1289); + setState(1298); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1288); + setState(1297); match(CypherParser::SP); } - setState(1291); + setState(1300); match(CypherParser::T__3); - setState(1293); + setState(1302); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1292); + setState(1301); match(CypherParser::SP); } - setState(1295); + setState(1304); oC_ProjectionItem(); } - setState(1300); + setState(1309); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 189, _ctx); } @@ -7642,6 +7725,7 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::T__25: case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -7663,35 +7747,35 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(1301); + setState(1310); oC_ProjectionItem(); - setState(1312); + setState(1321); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 192, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1303); + setState(1312); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1302); + setState(1311); match(CypherParser::SP); } - setState(1305); + setState(1314); match(CypherParser::T__3); - setState(1307); + setState(1316); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1306); + setState(1315); match(CypherParser::SP); } - setState(1309); + setState(1318); oC_ProjectionItem(); } - setState(1314); + setState(1323); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 192, _ctx); } @@ -7746,7 +7830,7 @@ size_t CypherParser::OC_ProjectionItemContext::getRuleIndex() const { CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { OC_ProjectionItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, CypherParser::RuleOC_ProjectionItem); + enterRule(_localctx, 132, CypherParser::RuleOC_ProjectionItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7756,27 +7840,27 @@ CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { exitRule(); }); try { - setState(1324); + setState(1333); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 194, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1317); + setState(1326); oC_Expression(); - setState(1318); + setState(1327); match(CypherParser::SP); - setState(1319); + setState(1328); match(CypherParser::AS); - setState(1320); + setState(1329); match(CypherParser::SP); - setState(1321); + setState(1330); oC_Variable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1323); + setState(1332); oC_Expression(); break; } @@ -7833,7 +7917,7 @@ size_t CypherParser::OC_OrderContext::getRuleIndex() const { CypherParser::OC_OrderContext* CypherParser::oC_Order() { OC_OrderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, CypherParser::RuleOC_Order); + enterRule(_localctx, 134, CypherParser::RuleOC_Order); size_t _la = 0; #if __cplusplus > 201703L @@ -7845,33 +7929,33 @@ CypherParser::OC_OrderContext* CypherParser::oC_Order() { }); try { enterOuterAlt(_localctx, 1); - setState(1326); + setState(1335); match(CypherParser::ORDER); - setState(1327); + setState(1336); match(CypherParser::SP); - setState(1328); + setState(1337); match(CypherParser::BY); - setState(1329); + setState(1338); match(CypherParser::SP); - setState(1330); + setState(1339); oC_SortItem(); - setState(1338); + setState(1347); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(1331); + setState(1340); match(CypherParser::T__3); - setState(1333); + setState(1342); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1332); + setState(1341); match(CypherParser::SP); } - setState(1335); + setState(1344); oC_SortItem(); - setState(1340); + setState(1349); _errHandler->sync(this); _la = _input->LA(1); } @@ -7912,7 +7996,7 @@ size_t CypherParser::OC_SkipContext::getRuleIndex() const { CypherParser::OC_SkipContext* CypherParser::oC_Skip() { OC_SkipContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, CypherParser::RuleOC_Skip); + enterRule(_localctx, 136, CypherParser::RuleOC_Skip); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7923,11 +8007,11 @@ CypherParser::OC_SkipContext* CypherParser::oC_Skip() { }); try { enterOuterAlt(_localctx, 1); - setState(1341); + setState(1350); match(CypherParser::L_SKIP); - setState(1342); + setState(1351); match(CypherParser::SP); - setState(1343); + setState(1352); oC_Expression(); } @@ -7966,7 +8050,7 @@ size_t CypherParser::OC_LimitContext::getRuleIndex() const { CypherParser::OC_LimitContext* CypherParser::oC_Limit() { OC_LimitContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, CypherParser::RuleOC_Limit); + enterRule(_localctx, 138, CypherParser::RuleOC_Limit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7977,11 +8061,11 @@ CypherParser::OC_LimitContext* CypherParser::oC_Limit() { }); try { enterOuterAlt(_localctx, 1); - setState(1345); + setState(1354); match(CypherParser::LIMIT); - setState(1346); + setState(1355); match(CypherParser::SP); - setState(1347); + setState(1356); oC_Expression(); } @@ -8032,7 +8116,7 @@ size_t CypherParser::OC_SortItemContext::getRuleIndex() const { CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { OC_SortItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, CypherParser::RuleOC_SortItem); + enterRule(_localctx, 140, CypherParser::RuleOC_SortItem); size_t _la = 0; #if __cplusplus > 201703L @@ -8044,25 +8128,25 @@ CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1349); + setState(1358); oC_Expression(); - setState(1354); + setState(1363); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 198, _ctx)) { case 1: { - setState(1351); + setState(1360); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1350); + setState(1359); match(CypherParser::SP); } - setState(1353); + setState(1362); _la = _input->LA(1); - if (!(((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 15) != 0))) { + if (!(((((_la - 104) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 104)) & 15) != 0))) { _errHandler->recoverInline(this); } else { @@ -8112,7 +8196,7 @@ size_t CypherParser::OC_WhereContext::getRuleIndex() const { CypherParser::OC_WhereContext* CypherParser::oC_Where() { OC_WhereContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, CypherParser::RuleOC_Where); + enterRule(_localctx, 142, CypherParser::RuleOC_Where); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8123,11 +8207,11 @@ CypherParser::OC_WhereContext* CypherParser::oC_Where() { }); try { enterOuterAlt(_localctx, 1); - setState(1356); + setState(1365); match(CypherParser::WHERE); - setState(1357); + setState(1366); match(CypherParser::SP); - setState(1358); + setState(1367); oC_Expression(); } @@ -8170,7 +8254,7 @@ size_t CypherParser::OC_PatternContext::getRuleIndex() const { CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { OC_PatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, CypherParser::RuleOC_Pattern); + enterRule(_localctx, 144, CypherParser::RuleOC_Pattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8183,35 +8267,35 @@ CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1360); + setState(1369); oC_PatternPart(); - setState(1371); + setState(1380); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1362); + setState(1371); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1361); + setState(1370); match(CypherParser::SP); } - setState(1364); + setState(1373); match(CypherParser::T__3); - setState(1366); + setState(1375); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1365); + setState(1374); match(CypherParser::SP); } - setState(1368); + setState(1377); oC_PatternPart(); } - setState(1373); + setState(1382); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); } @@ -8256,7 +8340,7 @@ size_t CypherParser::OC_PatternPartContext::getRuleIndex() const { CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { OC_PatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, CypherParser::RuleOC_PatternPart); + enterRule(_localctx, 146, CypherParser::RuleOC_PatternPart); size_t _la = 0; #if __cplusplus > 201703L @@ -8267,11 +8351,12 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { exitRule(); }); try { - setState(1385); + setState(1394); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -8283,34 +8368,34 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(1374); + setState(1383); oC_Variable(); - setState(1376); + setState(1385); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1375); + setState(1384); match(CypherParser::SP); } - setState(1378); + setState(1387); match(CypherParser::T__4); - setState(1380); + setState(1389); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1379); + setState(1388); match(CypherParser::SP); } - setState(1382); + setState(1391); oC_AnonymousPatternPart(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(1384); + setState(1393); oC_AnonymousPatternPart(); break; } @@ -8347,7 +8432,7 @@ size_t CypherParser::OC_AnonymousPatternPartContext::getRuleIndex() const { CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternPart() { OC_AnonymousPatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, CypherParser::RuleOC_AnonymousPatternPart); + enterRule(_localctx, 148, CypherParser::RuleOC_AnonymousPatternPart); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8358,7 +8443,7 @@ CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternP }); try { enterOuterAlt(_localctx, 1); - setState(1387); + setState(1396); oC_PatternElement(); } @@ -8409,7 +8494,7 @@ size_t CypherParser::OC_PatternElementContext::getRuleIndex() const { CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { OC_PatternElementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, CypherParser::RuleOC_PatternElement); + enterRule(_localctx, 150, CypherParser::RuleOC_PatternElement); size_t _la = 0; #if __cplusplus > 201703L @@ -8421,30 +8506,30 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { }); try { size_t alt; - setState(1403); + setState(1412); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 207, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1389); + setState(1398); oC_NodePattern(); - setState(1396); + setState(1405); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 206, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1391); + setState(1400); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1390); + setState(1399); match(CypherParser::SP); } - setState(1393); + setState(1402); oC_PatternElementChain(); } - setState(1398); + setState(1407); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 206, _ctx); } @@ -8453,11 +8538,11 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { case 2: { enterOuterAlt(_localctx, 2); - setState(1399); + setState(1408); match(CypherParser::T__1); - setState(1400); + setState(1409); oC_PatternElement(); - setState(1401); + setState(1410); match(CypherParser::T__2); break; } @@ -8510,7 +8595,7 @@ size_t CypherParser::OC_NodePatternContext::getRuleIndex() const { CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { OC_NodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, CypherParser::RuleOC_NodePattern); + enterRule(_localctx, 152, CypherParser::RuleOC_NodePattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8522,67 +8607,67 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(1405); + setState(1414); match(CypherParser::T__1); - setState(1407); + setState(1416); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1406); + setState(1415); match(CypherParser::SP); } - setState(1413); + setState(1422); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 47) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 47)) & 8913345) != 0) || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & 302256385) != 0)) { - setState(1409); + ((1ULL << (_la - 47)) & 17826753) != 0) || ((((_la - 118) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 118)) & 302256385) != 0)) { + setState(1418); oC_Variable(); - setState(1411); + setState(1420); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1410); + setState(1419); match(CypherParser::SP); } } - setState(1419); + setState(1428); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1415); + setState(1424); oC_NodeLabels(); - setState(1417); + setState(1426); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1416); + setState(1425); match(CypherParser::SP); } } - setState(1425); + setState(1434); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__7) { - setState(1421); + setState(1430); kU_Properties(); - setState(1423); + setState(1432); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1422); + setState(1431); match(CypherParser::SP); } } - setState(1427); + setState(1436); match(CypherParser::T__2); } @@ -8621,7 +8706,7 @@ size_t CypherParser::OC_PatternElementChainContext::getRuleIndex() const { CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChain() { OC_PatternElementChainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, CypherParser::RuleOC_PatternElementChain); + enterRule(_localctx, 154, CypherParser::RuleOC_PatternElementChain); size_t _la = 0; #if __cplusplus > 201703L @@ -8633,17 +8718,17 @@ CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChai }); try { enterOuterAlt(_localctx, 1); - setState(1429); + setState(1438); oC_RelationshipPattern(); - setState(1431); + setState(1440); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1430); + setState(1439); match(CypherParser::SP); } - setState(1433); + setState(1442); oC_NodePattern(); } @@ -8698,7 +8783,7 @@ size_t CypherParser::OC_RelationshipPatternContext::getRuleIndex() const { CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPattern() { OC_RelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, CypherParser::RuleOC_RelationshipPattern); + enterRule(_localctx, 156, CypherParser::RuleOC_RelationshipPattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8709,29 +8794,29 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter exitRule(); }); try { - setState(1479); + setState(1488); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1435); + setState(1444); oC_LeftArrowHead(); - setState(1437); + setState(1446); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1436); + setState(1445); match(CypherParser::SP); } - setState(1439); + setState(1448); oC_Dash(); - setState(1441); + setState(1450); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 217, _ctx)) { case 1: { - setState(1440); + setState(1449); match(CypherParser::SP); break; } @@ -8739,37 +8824,37 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1444); + setState(1453); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__5) { - setState(1443); + setState(1452); oC_RelationshipDetail(); } - setState(1447); + setState(1456); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1446); + setState(1455); match(CypherParser::SP); } - setState(1449); + setState(1458); oC_Dash(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1451); + setState(1460); oC_Dash(); - setState(1453); + setState(1462); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 220, _ctx)) { case 1: { - setState(1452); + setState(1461); match(CypherParser::SP); break; } @@ -8777,47 +8862,47 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1456); + setState(1465); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__5) { - setState(1455); + setState(1464); oC_RelationshipDetail(); } - setState(1459); + setState(1468); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1458); + setState(1467); match(CypherParser::SP); } - setState(1461); + setState(1470); oC_Dash(); - setState(1463); + setState(1472); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1462); + setState(1471); match(CypherParser::SP); } - setState(1465); + setState(1474); oC_RightArrowHead(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1467); + setState(1476); oC_Dash(); - setState(1469); + setState(1478); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 224, _ctx)) { case 1: { - setState(1468); + setState(1477); match(CypherParser::SP); break; } @@ -8825,23 +8910,23 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1472); + setState(1481); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__5) { - setState(1471); + setState(1480); oC_RelationshipDetail(); } - setState(1475); + setState(1484); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1474); + setState(1483); match(CypherParser::SP); } - setState(1477); + setState(1486); oC_Dash(); break; } @@ -8898,7 +8983,7 @@ size_t CypherParser::OC_RelationshipDetailContext::getRuleIndex() const { CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail() { OC_RelationshipDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, CypherParser::RuleOC_RelationshipDetail); + enterRule(_localctx, 158, CypherParser::RuleOC_RelationshipDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -8910,83 +8995,83 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( }); try { enterOuterAlt(_localctx, 1); - setState(1481); + setState(1490); match(CypherParser::T__5); - setState(1483); + setState(1492); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1482); + setState(1491); match(CypherParser::SP); } - setState(1489); + setState(1498); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 47) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 47)) & 8913345) != 0) || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & 302256385) != 0)) { - setState(1485); + ((1ULL << (_la - 47)) & 17826753) != 0) || ((((_la - 118) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 118)) & 302256385) != 0)) { + setState(1494); oC_Variable(); - setState(1487); + setState(1496); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1486); + setState(1495); match(CypherParser::SP); } } - setState(1495); + setState(1504); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1491); + setState(1500); oC_RelationshipTypes(); - setState(1493); + setState(1502); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1492); + setState(1501); match(CypherParser::SP); } } - setState(1501); + setState(1510); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::STAR) { - setState(1497); + setState(1506); oC_RangeLiteral(); - setState(1499); + setState(1508); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1498); + setState(1507); match(CypherParser::SP); } } - setState(1507); + setState(1516); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__7) { - setState(1503); + setState(1512); kU_Properties(); - setState(1505); + setState(1514); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1504); + setState(1513); match(CypherParser::SP); } } - setState(1509); + setState(1518); match(CypherParser::T__6); } @@ -9045,7 +9130,7 @@ size_t CypherParser::KU_PropertiesContext::getRuleIndex() const { CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { KU_PropertiesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, CypherParser::RuleKU_Properties); + enterRule(_localctx, 160, CypherParser::RuleKU_Properties); size_t _la = 0; #if __cplusplus > 201703L @@ -9057,103 +9142,103 @@ CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { }); try { enterOuterAlt(_localctx, 1); - setState(1511); + setState(1520); match(CypherParser::T__7); - setState(1513); + setState(1522); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1512); + setState(1521); match(CypherParser::SP); } - setState(1548); + setState(1557); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 47) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 47)) & 8913345) != 0) || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & 302256385) != 0)) { - setState(1515); + ((1ULL << (_la - 47)) & 17826753) != 0) || ((((_la - 118) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 118)) & 302256385) != 0)) { + setState(1524); oC_PropertyKeyName(); - setState(1517); + setState(1526); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1516); + setState(1525); match(CypherParser::SP); } - setState(1519); + setState(1528); match(CypherParser::COLON); - setState(1521); + setState(1530); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1520); + setState(1529); match(CypherParser::SP); } - setState(1523); + setState(1532); oC_Expression(); - setState(1525); + setState(1534); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1524); + setState(1533); match(CypherParser::SP); } - setState(1545); + setState(1554); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(1527); + setState(1536); match(CypherParser::T__3); - setState(1529); + setState(1538); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1528); + setState(1537); match(CypherParser::SP); } - setState(1531); + setState(1540); oC_PropertyKeyName(); - setState(1533); + setState(1542); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1532); + setState(1541); match(CypherParser::SP); } - setState(1535); + setState(1544); match(CypherParser::COLON); - setState(1537); + setState(1546); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1536); + setState(1545); match(CypherParser::SP); } - setState(1539); + setState(1548); oC_Expression(); - setState(1541); + setState(1550); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1540); + setState(1549); match(CypherParser::SP); } - setState(1547); + setState(1556); _errHandler->sync(this); _la = _input->LA(1); } } - setState(1550); + setState(1559); match(CypherParser::T__8); } @@ -9204,7 +9289,7 @@ size_t CypherParser::OC_RelationshipTypesContext::getRuleIndex() const { CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() { OC_RelationshipTypesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, CypherParser::RuleOC_RelationshipTypes); + enterRule(_localctx, 162, CypherParser::RuleOC_RelationshipTypes); size_t _la = 0; #if __cplusplus > 201703L @@ -9217,53 +9302,53 @@ CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1552); + setState(1561); match(CypherParser::COLON); - setState(1554); + setState(1563); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1553); + setState(1562); match(CypherParser::SP); } - setState(1556); + setState(1565); oC_RelTypeName(); - setState(1570); + setState(1579); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1558); + setState(1567); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1557); + setState(1566); match(CypherParser::SP); } - setState(1560); + setState(1569); match(CypherParser::T__9); - setState(1562); + setState(1571); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1561); + setState(1570); match(CypherParser::COLON); } - setState(1565); + setState(1574); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1564); + setState(1573); match(CypherParser::SP); } - setState(1567); + setState(1576); oC_RelTypeName(); } - setState(1572); + setState(1581); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); } @@ -9308,7 +9393,7 @@ size_t CypherParser::OC_NodeLabelsContext::getRuleIndex() const { CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { OC_NodeLabelsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, CypherParser::RuleOC_NodeLabels); + enterRule(_localctx, 164, CypherParser::RuleOC_NodeLabels); size_t _la = 0; #if __cplusplus > 201703L @@ -9321,25 +9406,25 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1573); + setState(1582); oC_NodeLabel(); - setState(1580); + setState(1589); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 253, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1575); + setState(1584); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1574); + setState(1583); match(CypherParser::SP); } - setState(1577); + setState(1586); oC_NodeLabel(); } - setState(1582); + setState(1591); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 253, _ctx); } @@ -9380,7 +9465,7 @@ size_t CypherParser::OC_NodeLabelContext::getRuleIndex() const { CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { OC_NodeLabelContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, CypherParser::RuleOC_NodeLabel); + enterRule(_localctx, 166, CypherParser::RuleOC_NodeLabel); size_t _la = 0; #if __cplusplus > 201703L @@ -9392,17 +9477,17 @@ CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { }); try { enterOuterAlt(_localctx, 1); - setState(1583); + setState(1592); match(CypherParser::COLON); - setState(1585); + setState(1594); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1584); + setState(1593); match(CypherParser::SP); } - setState(1587); + setState(1596); oC_LabelName(); } @@ -9465,7 +9550,7 @@ size_t CypherParser::OC_RangeLiteralContext::getRuleIndex() const { CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { OC_RangeLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, CypherParser::RuleOC_RangeLiteral); + enterRule(_localctx, 168, CypherParser::RuleOC_RangeLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -9477,14 +9562,14 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(1589); + setState(1598); match(CypherParser::STAR); - setState(1591); + setState(1600); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 255, _ctx)) { case 1: { - setState(1590); + setState(1599); match(CypherParser::SP); break; } @@ -9492,21 +9577,21 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1597); + setState(1606); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::SHORTEST: { - setState(1593); + setState(1602); match(CypherParser::SHORTEST); break; } case CypherParser::ALL: { - setState(1594); + setState(1603); match(CypherParser::ALL); - setState(1595); + setState(1604); match(CypherParser::SP); - setState(1596); + setState(1605); match(CypherParser::SHORTEST); break; } @@ -9523,12 +9608,12 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1600); + setState(1609); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 257, _ctx)) { case 1: { - setState(1599); + setState(1608); match(CypherParser::SP); break; } @@ -9536,35 +9621,35 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1616); + setState(1625); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 262, _ctx)) { case 1: { - setState(1603); + setState(1612); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1602); + setState(1611); oC_LowerBound(); } - setState(1606); + setState(1615); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1605); + setState(1614); match(CypherParser::SP); } - setState(1608); + setState(1617); match(CypherParser::T__10); - setState(1610); + setState(1619); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { case 1: { - setState(1609); + setState(1618); match(CypherParser::SP); break; } @@ -9572,19 +9657,19 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1613); + setState(1622); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1612); + setState(1621); oC_UpperBound(); } break; } case 2: { - setState(1615); + setState(1624); oC_IntegerLiteral(); break; } @@ -9592,20 +9677,20 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1622); + setState(1631); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 264, _ctx)) { case 1: { - setState(1619); + setState(1628); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1618); + setState(1627); match(CypherParser::SP); } - setState(1621); + setState(1630); kU_RecursiveRelationshipComprehension(); break; } @@ -9666,7 +9751,7 @@ size_t CypherParser::KU_RecursiveRelationshipComprehensionContext::getRuleIndex( CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_RecursiveRelationshipComprehension() { KU_RecursiveRelationshipComprehensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, CypherParser::RuleKU_RecursiveRelationshipComprehension); + enterRule(_localctx, 170, CypherParser::RuleKU_RecursiveRelationshipComprehension); size_t _la = 0; #if __cplusplus > 201703L @@ -9678,62 +9763,62 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec }); try { enterOuterAlt(_localctx, 1); - setState(1624); + setState(1633); match(CypherParser::T__1); - setState(1626); + setState(1635); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1625); + setState(1634); match(CypherParser::SP); } - setState(1628); + setState(1637); oC_Variable(); - setState(1630); + setState(1639); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1629); + setState(1638); match(CypherParser::SP); } - setState(1632); + setState(1641); match(CypherParser::T__3); - setState(1634); + setState(1643); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1633); + setState(1642); match(CypherParser::SP); } - setState(1636); - oC_Variable(); setState(1645); + oC_Variable(); + setState(1654); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 270, _ctx)) { case 1: { - setState(1638); + setState(1647); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1637); + setState(1646); match(CypherParser::SP); } - setState(1640); + setState(1649); match(CypherParser::T__9); - setState(1642); + setState(1651); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1641); + setState(1650); match(CypherParser::SP); } - setState(1644); + setState(1653); oC_Where(); break; } @@ -9741,61 +9826,61 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec default: break; } - setState(1666); + setState(1675); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__9 || _la == CypherParser::SP) { - setState(1648); + setState(1657); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1647); + setState(1656); match(CypherParser::SP); } - setState(1650); + setState(1659); match(CypherParser::T__9); - setState(1652); + setState(1661); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1651); + setState(1660); match(CypherParser::SP); } - setState(1654); + setState(1663); kU_IntermediateRelProjectionItems(); - setState(1656); + setState(1665); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1655); + setState(1664); match(CypherParser::SP); } - setState(1658); + setState(1667); match(CypherParser::T__3); - setState(1660); + setState(1669); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1659); + setState(1668); match(CypherParser::SP); } - setState(1662); + setState(1671); kU_IntermediateNodeProjectionItems(); - setState(1664); + setState(1673); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1663); + setState(1672); match(CypherParser::SP); } } - setState(1668); + setState(1677); match(CypherParser::T__2); } @@ -9834,7 +9919,7 @@ size_t CypherParser::KU_IntermediateNodeProjectionItemsContext::getRuleIndex() c CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_IntermediateNodeProjectionItems() { KU_IntermediateNodeProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, CypherParser::RuleKU_IntermediateNodeProjectionItems); + enterRule(_localctx, 172, CypherParser::RuleKU_IntermediateNodeProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -9846,14 +9931,14 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm }); try { enterOuterAlt(_localctx, 1); - setState(1670); + setState(1679); match(CypherParser::T__7); - setState(1672); + setState(1681); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 277, _ctx)) { case 1: { - setState(1671); + setState(1680); match(CypherParser::SP); break; } @@ -9861,26 +9946,26 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm default: break; } - setState(1675); + setState(1684); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139966783258607) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(1674); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139966783258607) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(1683); oC_ProjectionItems(); } - setState(1678); + setState(1687); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1677); + setState(1686); match(CypherParser::SP); } - setState(1680); + setState(1689); match(CypherParser::T__8); } @@ -9919,7 +10004,7 @@ size_t CypherParser::KU_IntermediateRelProjectionItemsContext::getRuleIndex() co CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_IntermediateRelProjectionItems() { KU_IntermediateRelProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, CypherParser::RuleKU_IntermediateRelProjectionItems); + enterRule(_localctx, 174, CypherParser::RuleKU_IntermediateRelProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -9931,14 +10016,14 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme }); try { enterOuterAlt(_localctx, 1); - setState(1682); + setState(1691); match(CypherParser::T__7); - setState(1684); + setState(1693); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 280, _ctx)) { case 1: { - setState(1683); + setState(1692); match(CypherParser::SP); break; } @@ -9946,26 +10031,26 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme default: break; } - setState(1687); + setState(1696); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139966783258607) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(1686); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139966783258607) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(1695); oC_ProjectionItems(); } - setState(1690); + setState(1699); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1689); + setState(1698); match(CypherParser::SP); } - setState(1692); + setState(1701); match(CypherParser::T__8); } @@ -9996,7 +10081,7 @@ size_t CypherParser::OC_LowerBoundContext::getRuleIndex() const { CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { OC_LowerBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, CypherParser::RuleOC_LowerBound); + enterRule(_localctx, 176, CypherParser::RuleOC_LowerBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10007,7 +10092,7 @@ CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { }); try { enterOuterAlt(_localctx, 1); - setState(1694); + setState(1703); match(CypherParser::DecimalInteger); } @@ -10038,7 +10123,7 @@ size_t CypherParser::OC_UpperBoundContext::getRuleIndex() const { CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { OC_UpperBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, CypherParser::RuleOC_UpperBound); + enterRule(_localctx, 178, CypherParser::RuleOC_UpperBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10049,7 +10134,7 @@ CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { }); try { enterOuterAlt(_localctx, 1); - setState(1696); + setState(1705); match(CypherParser::DecimalInteger); } @@ -10080,7 +10165,7 @@ size_t CypherParser::OC_LabelNameContext::getRuleIndex() const { CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { OC_LabelNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, CypherParser::RuleOC_LabelName); + enterRule(_localctx, 180, CypherParser::RuleOC_LabelName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10091,7 +10176,7 @@ CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { }); try { enterOuterAlt(_localctx, 1); - setState(1698); + setState(1707); oC_SchemaName(); } @@ -10122,7 +10207,7 @@ size_t CypherParser::OC_RelTypeNameContext::getRuleIndex() const { CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { OC_RelTypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, CypherParser::RuleOC_RelTypeName); + enterRule(_localctx, 182, CypherParser::RuleOC_RelTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10133,7 +10218,7 @@ CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { }); try { enterOuterAlt(_localctx, 1); - setState(1700); + setState(1709); oC_SchemaName(); } @@ -10164,7 +10249,7 @@ size_t CypherParser::OC_ExpressionContext::getRuleIndex() const { CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { OC_ExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, CypherParser::RuleOC_Expression); + enterRule(_localctx, 184, CypherParser::RuleOC_Expression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10175,7 +10260,7 @@ CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { }); try { enterOuterAlt(_localctx, 1); - setState(1702); + setState(1711); oC_OrExpression(); } @@ -10226,7 +10311,7 @@ size_t CypherParser::OC_OrExpressionContext::getRuleIndex() const { CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { OC_OrExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, CypherParser::RuleOC_OrExpression); + enterRule(_localctx, 186, CypherParser::RuleOC_OrExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10238,23 +10323,23 @@ CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1704); + setState(1713); oC_XorExpression(); - setState(1711); + setState(1720); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 283, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1705); + setState(1714); match(CypherParser::SP); - setState(1706); + setState(1715); match(CypherParser::OR); - setState(1707); + setState(1716); match(CypherParser::SP); - setState(1708); + setState(1717); oC_XorExpression(); } - setState(1713); + setState(1722); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 283, _ctx); } @@ -10307,7 +10392,7 @@ size_t CypherParser::OC_XorExpressionContext::getRuleIndex() const { CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { OC_XorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, CypherParser::RuleOC_XorExpression); + enterRule(_localctx, 188, CypherParser::RuleOC_XorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10319,23 +10404,23 @@ CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1714); + setState(1723); oC_AndExpression(); - setState(1721); + setState(1730); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1715); + setState(1724); match(CypherParser::SP); - setState(1716); + setState(1725); match(CypherParser::XOR); - setState(1717); + setState(1726); match(CypherParser::SP); - setState(1718); + setState(1727); oC_AndExpression(); } - setState(1723); + setState(1732); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); } @@ -10388,7 +10473,7 @@ size_t CypherParser::OC_AndExpressionContext::getRuleIndex() const { CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { OC_AndExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, CypherParser::RuleOC_AndExpression); + enterRule(_localctx, 190, CypherParser::RuleOC_AndExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10400,23 +10485,23 @@ CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1724); + setState(1733); oC_NotExpression(); - setState(1731); + setState(1740); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 285, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1725); + setState(1734); match(CypherParser::SP); - setState(1726); + setState(1735); match(CypherParser::AND); - setState(1727); + setState(1736); match(CypherParser::SP); - setState(1728); + setState(1737); oC_NotExpression(); } - setState(1733); + setState(1742); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 285, _ctx); } @@ -10465,7 +10550,7 @@ size_t CypherParser::OC_NotExpressionContext::getRuleIndex() const { CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { OC_NotExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, CypherParser::RuleOC_NotExpression); + enterRule(_localctx, 192, CypherParser::RuleOC_NotExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10477,25 +10562,25 @@ CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(1740); + setState(1749); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::NOT) { - setState(1734); + setState(1743); match(CypherParser::NOT); - setState(1736); + setState(1745); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1735); + setState(1744); match(CypherParser::SP); } - setState(1742); + setState(1751); _errHandler->sync(this); _la = _input->LA(1); } - setState(1743); + setState(1752); oC_ComparisonExpression(); } @@ -10550,7 +10635,7 @@ size_t CypherParser::OC_ComparisonExpressionContext::getRuleIndex() const { CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpression() { OC_ComparisonExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, CypherParser::RuleOC_ComparisonExpression); + enterRule(_localctx, 194, CypherParser::RuleOC_ComparisonExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10562,37 +10647,37 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress }); try { size_t alt; - setState(1793); + setState(1802); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 298, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1745); + setState(1754); kU_BitwiseOrOperatorExpression(); - setState(1755); + setState(1764); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 290, _ctx)) { case 1: { - setState(1747); + setState(1756); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1746); + setState(1755); match(CypherParser::SP); } - setState(1749); + setState(1758); kU_ComparisonOperator(); - setState(1751); + setState(1760); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1750); + setState(1759); match(CypherParser::SP); } - setState(1753); + setState(1762); kU_BitwiseOrOperatorExpression(); break; } @@ -10605,28 +10690,28 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 2: { enterOuterAlt(_localctx, 2); - setState(1757); + setState(1766); kU_BitwiseOrOperatorExpression(); - setState(1759); + setState(1768); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1758); + setState(1767); match(CypherParser::SP); } - setState(1761); + setState(1770); antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); - setState(1763); + setState(1772); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1762); + setState(1771); match(CypherParser::SP); } - setState(1765); + setState(1774); kU_BitwiseOrOperatorExpression(); notifyInvalidNotEqualOperator(antlrcpp::downCast(_localctx)->invalid_not_equalToken); break; @@ -10634,53 +10719,53 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 3: { enterOuterAlt(_localctx, 3); - setState(1769); + setState(1778); kU_BitwiseOrOperatorExpression(); - setState(1771); + setState(1780); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1770); + setState(1779); match(CypherParser::SP); } - setState(1773); + setState(1782); kU_ComparisonOperator(); - setState(1775); + setState(1784); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1774); + setState(1783); match(CypherParser::SP); } - setState(1777); + setState(1786); kU_BitwiseOrOperatorExpression(); - setState(1787); + setState(1796); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1779); + setState(1788); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1778); + setState(1787); match(CypherParser::SP); } - setState(1781); + setState(1790); kU_ComparisonOperator(); - setState(1783); + setState(1792); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1782); + setState(1791); match(CypherParser::SP); } - setState(1785); + setState(1794); kU_BitwiseOrOperatorExpression(); break; } @@ -10688,7 +10773,7 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress default: throw NoViableAltException(this); } - setState(1789); + setState(1798); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 297, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -10724,7 +10809,7 @@ size_t CypherParser::KU_ComparisonOperatorContext::getRuleIndex() const { CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator() { KU_ComparisonOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, CypherParser::RuleKU_ComparisonOperator); + enterRule(_localctx, 196, CypherParser::RuleKU_ComparisonOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -10736,7 +10821,7 @@ CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator( }); try { enterOuterAlt(_localctx, 1); - setState(1795); + setState(1804); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 127008) != 0))) { @@ -10787,7 +10872,7 @@ size_t CypherParser::KU_BitwiseOrOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrOperatorExpression() { KU_BitwiseOrOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, CypherParser::RuleKU_BitwiseOrOperatorExpression); + enterRule(_localctx, 198, CypherParser::RuleKU_BitwiseOrOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10800,35 +10885,35 @@ CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrO try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1797); + setState(1806); kU_BitwiseAndOperatorExpression(); - setState(1808); + setState(1817); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 301, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1799); + setState(1808); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1798); + setState(1807); match(CypherParser::SP); } - setState(1801); + setState(1810); match(CypherParser::T__9); - setState(1803); + setState(1812); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1802); + setState(1811); match(CypherParser::SP); } - setState(1805); + setState(1814); kU_BitwiseAndOperatorExpression(); } - setState(1810); + setState(1819); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 301, _ctx); } @@ -10873,7 +10958,7 @@ size_t CypherParser::KU_BitwiseAndOperatorExpressionContext::getRuleIndex() cons CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAndOperatorExpression() { KU_BitwiseAndOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, CypherParser::RuleKU_BitwiseAndOperatorExpression); + enterRule(_localctx, 200, CypherParser::RuleKU_BitwiseAndOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10886,35 +10971,35 @@ CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAn try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1811); + setState(1820); kU_BitShiftOperatorExpression(); - setState(1822); + setState(1831); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 304, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1813); + setState(1822); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1812); + setState(1821); match(CypherParser::SP); } - setState(1815); + setState(1824); match(CypherParser::T__16); - setState(1817); + setState(1826); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1816); + setState(1825); match(CypherParser::SP); } - setState(1819); + setState(1828); kU_BitShiftOperatorExpression(); } - setState(1824); + setState(1833); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 304, _ctx); } @@ -10967,7 +11052,7 @@ size_t CypherParser::KU_BitShiftOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOperatorExpression() { KU_BitShiftOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, CypherParser::RuleKU_BitShiftOperatorExpression); + enterRule(_localctx, 202, CypherParser::RuleKU_BitShiftOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10980,35 +11065,35 @@ CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOpe try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1825); + setState(1834); oC_AddOrSubtractExpression(); - setState(1837); + setState(1846); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 307, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1827); + setState(1836); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1826); + setState(1835); match(CypherParser::SP); } - setState(1829); + setState(1838); kU_BitShiftOperator(); - setState(1831); + setState(1840); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1830); + setState(1839); match(CypherParser::SP); } - setState(1833); + setState(1842); oC_AddOrSubtractExpression(); } - setState(1839); + setState(1848); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 307, _ctx); } @@ -11037,7 +11122,7 @@ size_t CypherParser::KU_BitShiftOperatorContext::getRuleIndex() const { CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { KU_BitShiftOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, CypherParser::RuleKU_BitShiftOperator); + enterRule(_localctx, 204, CypherParser::RuleKU_BitShiftOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11049,7 +11134,7 @@ CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(1840); + setState(1849); _la = _input->LA(1); if (!(_la == CypherParser::T__17 @@ -11109,7 +11194,7 @@ size_t CypherParser::OC_AddOrSubtractExpressionContext::getRuleIndex() const { CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractExpression() { OC_AddOrSubtractExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, CypherParser::RuleOC_AddOrSubtractExpression); + enterRule(_localctx, 206, CypherParser::RuleOC_AddOrSubtractExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11122,35 +11207,35 @@ CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractE try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1842); + setState(1851); oC_MultiplyDivideModuloExpression(); - setState(1854); + setState(1863); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1844); + setState(1853); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1843); + setState(1852); match(CypherParser::SP); } - setState(1846); + setState(1855); kU_AddOrSubtractOperator(); - setState(1848); + setState(1857); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1847); + setState(1856); match(CypherParser::SP); } - setState(1850); + setState(1859); oC_MultiplyDivideModuloExpression(); } - setState(1856); + setState(1865); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); } @@ -11183,7 +11268,7 @@ size_t CypherParser::KU_AddOrSubtractOperatorContext::getRuleIndex() const { CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOperator() { KU_AddOrSubtractOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, CypherParser::RuleKU_AddOrSubtractOperator); + enterRule(_localctx, 208, CypherParser::RuleKU_AddOrSubtractOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11195,7 +11280,7 @@ CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOpe }); try { enterOuterAlt(_localctx, 1); - setState(1857); + setState(1866); _la = _input->LA(1); if (!(_la == CypherParser::T__19 || _la == CypherParser::MINUS)) { _errHandler->recoverInline(this); @@ -11253,7 +11338,7 @@ size_t CypherParser::OC_MultiplyDivideModuloExpressionContext::getRuleIndex() co CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_MultiplyDivideModuloExpression() { OC_MultiplyDivideModuloExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, CypherParser::RuleOC_MultiplyDivideModuloExpression); + enterRule(_localctx, 210, CypherParser::RuleOC_MultiplyDivideModuloExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11266,35 +11351,35 @@ CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_Multipl try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1859); + setState(1868); oC_PowerOfExpression(); - setState(1871); + setState(1880); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 313, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1861); + setState(1870); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1860); + setState(1869); match(CypherParser::SP); } - setState(1863); + setState(1872); kU_MultiplyDivideModuloOperator(); - setState(1865); + setState(1874); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1864); + setState(1873); match(CypherParser::SP); } - setState(1867); + setState(1876); oC_PowerOfExpression(); } - setState(1873); + setState(1882); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 313, _ctx); } @@ -11327,7 +11412,7 @@ size_t CypherParser::KU_MultiplyDivideModuloOperatorContext::getRuleIndex() cons CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyDivideModuloOperator() { KU_MultiplyDivideModuloOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, CypherParser::RuleKU_MultiplyDivideModuloOperator); + enterRule(_localctx, 212, CypherParser::RuleKU_MultiplyDivideModuloOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11339,7 +11424,7 @@ CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyD }); try { enterOuterAlt(_localctx, 1); - setState(1874); + setState(1883); _la = _input->LA(1); if (!(_la == CypherParser::T__20 @@ -11391,7 +11476,7 @@ size_t CypherParser::OC_PowerOfExpressionContext::getRuleIndex() const { CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() { OC_PowerOfExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, CypherParser::RuleOC_PowerOfExpression); + enterRule(_localctx, 214, CypherParser::RuleOC_PowerOfExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11404,35 +11489,35 @@ CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1876); + setState(1885); oC_UnaryAddSubtractOrFactorialExpression(); - setState(1887); + setState(1896); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 316, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1878); + setState(1887); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1877); + setState(1886); match(CypherParser::SP); } - setState(1880); + setState(1889); match(CypherParser::T__22); - setState(1882); + setState(1891); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1881); + setState(1890); match(CypherParser::SP); } - setState(1884); + setState(1893); oC_UnaryAddSubtractOrFactorialExpression(); } - setState(1889); + setState(1898); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 316, _ctx); } @@ -11485,7 +11570,7 @@ size_t CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext::getRuleInd CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_UnaryAddSubtractOrFactorialExpression() { OC_UnaryAddSubtractOrFactorialExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); + enterRule(_localctx, 216, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11497,40 +11582,40 @@ CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_ }); try { enterOuterAlt(_localctx, 1); - setState(1896); + setState(1905); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::MINUS) { - setState(1890); + setState(1899); match(CypherParser::MINUS); - setState(1892); + setState(1901); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1891); + setState(1900); match(CypherParser::SP); } - setState(1898); + setState(1907); _errHandler->sync(this); _la = _input->LA(1); } - setState(1899); + setState(1908); oC_StringListNullOperatorExpression(); - setState(1904); + setState(1913); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 320, _ctx)) { case 1: { - setState(1901); + setState(1910); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1900); + setState(1909); match(CypherParser::SP); } - setState(1903); + setState(1912); match(CypherParser::FACTORIAL); break; } @@ -11583,7 +11668,7 @@ size_t CypherParser::OC_StringListNullOperatorExpressionContext::getRuleIndex() CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_StringListNullOperatorExpression() { OC_StringListNullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, CypherParser::RuleOC_StringListNullOperatorExpression); + enterRule(_localctx, 218, CypherParser::RuleOC_StringListNullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11595,26 +11680,26 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1906); + setState(1915); oC_PropertyOrLabelsExpression(); - setState(1914); + setState(1923); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 322, _ctx)) { case 1: { - setState(1907); + setState(1916); oC_StringOperatorExpression(); break; } case 2: { - setState(1909); + setState(1918); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1908); + setState(1917); oC_ListOperatorExpression(); break; } @@ -11622,7 +11707,7 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin default: throw NoViableAltException(this); } - setState(1911); + setState(1920); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 321, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -11630,7 +11715,7 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin } case 3: { - setState(1913); + setState(1922); oC_NullOperatorExpression(); break; } @@ -11691,7 +11776,7 @@ size_t CypherParser::OC_ListOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExpression() { OC_ListOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, CypherParser::RuleOC_ListOperatorExpression); + enterRule(_localctx, 220, CypherParser::RuleOC_ListOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11702,68 +11787,68 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp exitRule(); }); try { - setState(1935); + setState(1944); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 326, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1916); + setState(1925); match(CypherParser::SP); - setState(1917); + setState(1926); match(CypherParser::IN); - setState(1919); + setState(1928); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1918); + setState(1927); match(CypherParser::SP); } - setState(1921); + setState(1930); oC_PropertyOrLabelsExpression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1922); + setState(1931); match(CypherParser::T__5); - setState(1923); + setState(1932); oC_Expression(); - setState(1924); + setState(1933); match(CypherParser::T__6); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1926); + setState(1935); match(CypherParser::T__5); - setState(1928); + setState(1937); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139968930742255) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(1927); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139968930742255) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(1936); oC_Expression(); } - setState(1930); + setState(1939); match(CypherParser::COLON); - setState(1932); + setState(1941); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139968930742255) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(1931); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139968930742255) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(1940); oC_Expression(); } - setState(1934); + setState(1943); match(CypherParser::T__6); break; } @@ -11828,7 +11913,7 @@ size_t CypherParser::OC_StringOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperatorExpression() { OC_StringOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, CypherParser::RuleOC_StringOperatorExpression); + enterRule(_localctx, 222, CypherParser::RuleOC_StringOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11840,43 +11925,43 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato }); try { enterOuterAlt(_localctx, 1); - setState(1948); + setState(1957); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 327, _ctx)) { case 1: { - setState(1937); + setState(1946); oC_RegularExpression(); break; } case 2: { - setState(1938); + setState(1947); match(CypherParser::SP); - setState(1939); + setState(1948); match(CypherParser::STARTS); - setState(1940); + setState(1949); match(CypherParser::SP); - setState(1941); + setState(1950); match(CypherParser::WITH); break; } case 3: { - setState(1942); + setState(1951); match(CypherParser::SP); - setState(1943); + setState(1952); match(CypherParser::ENDS); - setState(1944); + setState(1953); match(CypherParser::SP); - setState(1945); + setState(1954); match(CypherParser::WITH); break; } case 4: { - setState(1946); + setState(1955); match(CypherParser::SP); - setState(1947); + setState(1956); match(CypherParser::CONTAINS); break; } @@ -11884,15 +11969,15 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato default: break; } - setState(1951); + setState(1960); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1950); + setState(1959); match(CypherParser::SP); } - setState(1953); + setState(1962); oC_PropertyOrLabelsExpression(); } @@ -11923,7 +12008,7 @@ size_t CypherParser::OC_RegularExpressionContext::getRuleIndex() const { CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() { OC_RegularExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, CypherParser::RuleOC_RegularExpression); + enterRule(_localctx, 224, CypherParser::RuleOC_RegularExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11935,15 +12020,15 @@ CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() }); try { enterOuterAlt(_localctx, 1); - setState(1956); + setState(1965); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1955); + setState(1964); match(CypherParser::SP); } - setState(1958); + setState(1967); match(CypherParser::T__23); } @@ -11990,7 +12075,7 @@ size_t CypherParser::OC_NullOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExpression() { OC_NullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, CypherParser::RuleOC_NullOperatorExpression); + enterRule(_localctx, 226, CypherParser::RuleOC_NullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12000,35 +12085,35 @@ CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExp exitRule(); }); try { - setState(1970); + setState(1979); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 330, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1960); + setState(1969); match(CypherParser::SP); - setState(1961); + setState(1970); match(CypherParser::IS); - setState(1962); + setState(1971); match(CypherParser::SP); - setState(1963); + setState(1972); match(CypherParser::NULL_); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1964); + setState(1973); match(CypherParser::SP); - setState(1965); + setState(1974); match(CypherParser::IS); - setState(1966); + setState(1975); match(CypherParser::SP); - setState(1967); + setState(1976); match(CypherParser::NOT); - setState(1968); + setState(1977); match(CypherParser::SP); - setState(1969); + setState(1978); match(CypherParser::NULL_); break; } @@ -12081,7 +12166,7 @@ size_t CypherParser::OC_PropertyOrLabelsExpressionContext::getRuleIndex() const CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrLabelsExpression() { OC_PropertyOrLabelsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, CypherParser::RuleOC_PropertyOrLabelsExpression); + enterRule(_localctx, 228, CypherParser::RuleOC_PropertyOrLabelsExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12094,25 +12179,25 @@ CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrL try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1972); + setState(1981); oC_Atom(); - setState(1979); + setState(1988); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 332, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1974); + setState(1983); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1973); + setState(1982); match(CypherParser::SP); } - setState(1976); + setState(1985); oC_PropertyLookup(); } - setState(1981); + setState(1990); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 332, _ctx); } @@ -12177,7 +12262,7 @@ size_t CypherParser::OC_AtomContext::getRuleIndex() const { CypherParser::OC_AtomContext* CypherParser::oC_Atom() { OC_AtomContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, CypherParser::RuleOC_Atom); + enterRule(_localctx, 230, CypherParser::RuleOC_Atom); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12187,68 +12272,68 @@ CypherParser::OC_AtomContext* CypherParser::oC_Atom() { exitRule(); }); try { - setState(1991); + setState(2000); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 333, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1982); + setState(1991); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1983); + setState(1992); oC_Parameter(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1984); + setState(1993); oC_CaseExpression(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1985); + setState(1994); oC_ParenthesizedExpression(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1986); + setState(1995); oC_FunctionInvocation(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(1987); + setState(1996); oC_PathPatterns(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(1988); + setState(1997); oC_ExistSubquery(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(1989); + setState(1998); kU_CountSubquery(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(1990); + setState(1999); oC_Variable(); break; } @@ -12305,7 +12390,7 @@ size_t CypherParser::OC_LiteralContext::getRuleIndex() const { CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { OC_LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, CypherParser::RuleOC_Literal); + enterRule(_localctx, 232, CypherParser::RuleOC_Literal); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12315,20 +12400,20 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { exitRule(); }); try { - setState(1999); + setState(2008); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::DecimalInteger: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(1993); + setState(2002); oC_NumberLiteral(); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(1994); + setState(2003); match(CypherParser::StringLiteral); break; } @@ -12336,28 +12421,28 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { case CypherParser::TRUE: case CypherParser::FALSE: { enterOuterAlt(_localctx, 3); - setState(1995); + setState(2004); oC_BooleanLiteral(); break; } case CypherParser::NULL_: { enterOuterAlt(_localctx, 4); - setState(1996); + setState(2005); match(CypherParser::NULL_); break; } case CypherParser::T__5: { enterOuterAlt(_localctx, 5); - setState(1997); + setState(2006); oC_ListLiteral(); break; } case CypherParser::T__7: { enterOuterAlt(_localctx, 6); - setState(1998); + setState(2007); kU_StructLiteral(); break; } @@ -12398,7 +12483,7 @@ size_t CypherParser::OC_BooleanLiteralContext::getRuleIndex() const { CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { OC_BooleanLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, CypherParser::RuleOC_BooleanLiteral); + enterRule(_localctx, 234, CypherParser::RuleOC_BooleanLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12410,7 +12495,7 @@ CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2001); + setState(2010); _la = _input->LA(1); if (!(_la == CypherParser::TRUE @@ -12466,7 +12551,7 @@ size_t CypherParser::OC_ListLiteralContext::getRuleIndex() const { CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { OC_ListLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, CypherParser::RuleOC_ListLiteral); + enterRule(_localctx, 236, CypherParser::RuleOC_ListLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12478,54 +12563,54 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2003); + setState(2012); match(CypherParser::T__5); - setState(2005); + setState(2014); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2004); + setState(2013); match(CypherParser::SP); } - setState(2020); + setState(2029); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139968930742255) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(2007); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139968930742255) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(2016); oC_Expression(); - setState(2009); + setState(2018); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2008); + setState(2017); match(CypherParser::SP); } - setState(2017); + setState(2026); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2011); + setState(2020); kU_ListEntry(); - setState(2013); + setState(2022); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2012); + setState(2021); match(CypherParser::SP); } - setState(2019); + setState(2028); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2022); + setState(2031); match(CypherParser::T__6); } @@ -12560,7 +12645,7 @@ size_t CypherParser::KU_ListEntryContext::getRuleIndex() const { CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { KU_ListEntryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, CypherParser::RuleKU_ListEntry); + enterRule(_localctx, 238, CypherParser::RuleKU_ListEntry); size_t _la = 0; #if __cplusplus > 201703L @@ -12572,14 +12657,14 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { }); try { enterOuterAlt(_localctx, 1); - setState(2024); + setState(2033); match(CypherParser::T__3); - setState(2026); + setState(2035); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 340, _ctx)) { case 1: { - setState(2025); + setState(2034); match(CypherParser::SP); break; } @@ -12587,15 +12672,15 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { default: break; } - setState(2029); + setState(2038); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139968930742255) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(2028); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139968930742255) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(2037); oC_Expression(); } @@ -12639,7 +12724,7 @@ size_t CypherParser::KU_StructLiteralContext::getRuleIndex() const { CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { KU_StructLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, CypherParser::RuleKU_StructLiteral); + enterRule(_localctx, 240, CypherParser::RuleKU_StructLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12651,55 +12736,55 @@ CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2031); + setState(2040); match(CypherParser::T__7); - setState(2033); + setState(2042); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2032); + setState(2041); match(CypherParser::SP); } - setState(2035); + setState(2044); kU_StructField(); - setState(2037); + setState(2046); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2036); + setState(2045); match(CypherParser::SP); } - setState(2049); + setState(2058); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2039); + setState(2048); match(CypherParser::T__3); - setState(2041); + setState(2050); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2040); + setState(2049); match(CypherParser::SP); } - setState(2043); + setState(2052); kU_StructField(); - setState(2045); + setState(2054); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2044); + setState(2053); match(CypherParser::SP); } - setState(2051); + setState(2060); _errHandler->sync(this); _la = _input->LA(1); } - setState(2052); + setState(2061); match(CypherParser::T__8); } @@ -12750,7 +12835,7 @@ size_t CypherParser::KU_StructFieldContext::getRuleIndex() const { CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { KU_StructFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, CypherParser::RuleKU_StructField); + enterRule(_localctx, 242, CypherParser::RuleKU_StructField); size_t _la = 0; #if __cplusplus > 201703L @@ -12762,11 +12847,12 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { }); try { enterOuterAlt(_localctx, 1); - setState(2056); + setState(2065); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -12777,13 +12863,13 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2054); + setState(2063); oC_SymbolicName(); break; } case CypherParser::StringLiteral: { - setState(2055); + setState(2064); match(CypherParser::StringLiteral); break; } @@ -12791,25 +12877,25 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { default: throw NoViableAltException(this); } - setState(2059); + setState(2068); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2058); + setState(2067); match(CypherParser::SP); } - setState(2061); + setState(2070); match(CypherParser::COLON); - setState(2063); + setState(2072); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2062); + setState(2071); match(CypherParser::SP); } - setState(2065); + setState(2074); oC_Expression(); } @@ -12848,7 +12934,7 @@ size_t CypherParser::OC_ParenthesizedExpressionContext::getRuleIndex() const { CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedExpression() { OC_ParenthesizedExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, CypherParser::RuleOC_ParenthesizedExpression); + enterRule(_localctx, 244, CypherParser::RuleOC_ParenthesizedExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12860,27 +12946,27 @@ CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedE }); try { enterOuterAlt(_localctx, 1); - setState(2067); + setState(2076); match(CypherParser::T__1); - setState(2069); + setState(2078); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2068); + setState(2077); match(CypherParser::SP); } - setState(2071); + setState(2080); oC_Expression(); - setState(2073); + setState(2082); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2072); + setState(2081); match(CypherParser::SP); } - setState(2075); + setState(2084); match(CypherParser::T__2); } @@ -12939,7 +13025,7 @@ size_t CypherParser::OC_FunctionInvocationContext::getRuleIndex() const { CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation() { OC_FunctionInvocationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, CypherParser::RuleOC_FunctionInvocation); + enterRule(_localctx, 246, CypherParser::RuleOC_FunctionInvocation); size_t _la = 0; #if __cplusplus > 201703L @@ -12950,132 +13036,132 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( exitRule(); }); try { - setState(2125); + setState(2134); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 364, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2077); + setState(2086); match(CypherParser::COUNT); - setState(2079); + setState(2088); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2078); + setState(2087); match(CypherParser::SP); } - setState(2081); + setState(2090); match(CypherParser::T__1); - setState(2083); + setState(2092); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2082); + setState(2091); match(CypherParser::SP); } - setState(2085); + setState(2094); match(CypherParser::STAR); - setState(2087); + setState(2096); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2086); + setState(2095); match(CypherParser::SP); } - setState(2089); + setState(2098); match(CypherParser::T__2); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2090); + setState(2099); oC_FunctionName(); - setState(2092); + setState(2101); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2091); + setState(2100); match(CypherParser::SP); } - setState(2094); + setState(2103); match(CypherParser::T__1); - setState(2096); + setState(2105); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2095); + setState(2104); match(CypherParser::SP); } - setState(2102); + setState(2111); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DISTINCT) { - setState(2098); + setState(2107); match(CypherParser::DISTINCT); - setState(2100); + setState(2109); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2099); + setState(2108); match(CypherParser::SP); } } - setState(2121); + setState(2130); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132338651460) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -4681139968930742255) != 0) || ((((_la - 132) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 132)) & 9741) != 0)) { - setState(2104); + ((1ULL << _la) & 135248726376579396) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -4681139968930742255) != 0) || ((((_la - 133) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 133)) & 9741) != 0)) { + setState(2113); kU_FunctionParameter(); - setState(2106); + setState(2115); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2105); + setState(2114); match(CypherParser::SP); } - setState(2118); + setState(2127); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2108); + setState(2117); match(CypherParser::T__3); - setState(2110); + setState(2119); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2109); + setState(2118); match(CypherParser::SP); } - setState(2112); + setState(2121); kU_FunctionParameter(); - setState(2114); + setState(2123); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2113); + setState(2122); match(CypherParser::SP); } - setState(2120); + setState(2129); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2123); + setState(2132); match(CypherParser::T__2); break; } @@ -13112,7 +13198,7 @@ size_t CypherParser::OC_FunctionNameContext::getRuleIndex() const { CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { OC_FunctionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, CypherParser::RuleOC_FunctionName); + enterRule(_localctx, 248, CypherParser::RuleOC_FunctionName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13123,7 +13209,7 @@ CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { }); try { enterOuterAlt(_localctx, 1); - setState(2127); + setState(2136); oC_SymbolicName(); } @@ -13170,7 +13256,7 @@ size_t CypherParser::KU_FunctionParameterContext::getRuleIndex() const { CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() { KU_FunctionParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, CypherParser::RuleKU_FunctionParameter); + enterRule(_localctx, 250, CypherParser::RuleKU_FunctionParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -13182,31 +13268,31 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() }); try { enterOuterAlt(_localctx, 1); - setState(2138); + setState(2147); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 367, _ctx)) { case 1: { - setState(2129); + setState(2138); oC_SymbolicName(); - setState(2131); + setState(2140); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2130); + setState(2139); match(CypherParser::SP); } - setState(2133); + setState(2142); match(CypherParser::COLON); - setState(2134); + setState(2143); match(CypherParser::T__4); - setState(2136); + setState(2145); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2135); + setState(2144); match(CypherParser::SP); } break; @@ -13215,7 +13301,7 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() default: break; } - setState(2140); + setState(2149); oC_Expression(); } @@ -13262,7 +13348,7 @@ size_t CypherParser::OC_PathPatternsContext::getRuleIndex() const { CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { OC_PathPatternsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, CypherParser::RuleOC_PathPatterns); + enterRule(_localctx, 252, CypherParser::RuleOC_PathPatterns); size_t _la = 0; #if __cplusplus > 201703L @@ -13275,23 +13361,23 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2142); + setState(2151); oC_NodePattern(); - setState(2147); + setState(2156); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2144); + setState(2153); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2143); + setState(2152); match(CypherParser::SP); } - setState(2146); + setState(2155); oC_PatternElementChain(); break; } @@ -13299,7 +13385,7 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { default: throw NoViableAltException(this); } - setState(2149); + setState(2158); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 369, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -13352,7 +13438,7 @@ size_t CypherParser::OC_ExistSubqueryContext::getRuleIndex() const { CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { OC_ExistSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, CypherParser::RuleOC_ExistSubquery); + enterRule(_localctx, 254, CypherParser::RuleOC_ExistSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -13364,52 +13450,52 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2151); + setState(2160); match(CypherParser::EXISTS); - setState(2153); + setState(2162); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2152); + setState(2161); match(CypherParser::SP); } - setState(2155); + setState(2164); match(CypherParser::T__7); - setState(2157); + setState(2166); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2156); + setState(2165); match(CypherParser::SP); } - setState(2159); + setState(2168); match(CypherParser::MATCH); - setState(2161); + setState(2170); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2160); + setState(2169); match(CypherParser::SP); } - setState(2163); + setState(2172); oC_Pattern(); - setState(2168); + setState(2177); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 374, _ctx)) { case 1: { - setState(2165); + setState(2174); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2164); + setState(2173); match(CypherParser::SP); } - setState(2167); + setState(2176); oC_Where(); break; } @@ -13417,15 +13503,15 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { default: break; } - setState(2171); + setState(2180); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2170); + setState(2179); match(CypherParser::SP); } - setState(2173); + setState(2182); match(CypherParser::T__8); } @@ -13476,7 +13562,7 @@ size_t CypherParser::KU_CountSubqueryContext::getRuleIndex() const { CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { KU_CountSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, CypherParser::RuleKU_CountSubquery); + enterRule(_localctx, 256, CypherParser::RuleKU_CountSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -13488,52 +13574,52 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2175); + setState(2184); match(CypherParser::COUNT); - setState(2177); + setState(2186); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2176); + setState(2185); match(CypherParser::SP); } - setState(2179); + setState(2188); match(CypherParser::T__7); - setState(2181); + setState(2190); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2180); + setState(2189); match(CypherParser::SP); } - setState(2183); + setState(2192); match(CypherParser::MATCH); - setState(2185); + setState(2194); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2184); + setState(2193); match(CypherParser::SP); } - setState(2187); + setState(2196); oC_Pattern(); - setState(2192); + setState(2201); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 380, _ctx)) { case 1: { - setState(2189); + setState(2198); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2188); + setState(2197); match(CypherParser::SP); } - setState(2191); + setState(2200); oC_Where(); break; } @@ -13541,15 +13627,15 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { default: break; } - setState(2195); + setState(2204); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2194); + setState(2203); match(CypherParser::SP); } - setState(2197); + setState(2206); match(CypherParser::T__8); } @@ -13588,7 +13674,7 @@ size_t CypherParser::OC_PropertyLookupContext::getRuleIndex() const { CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { OC_PropertyLookupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, CypherParser::RuleOC_PropertyLookup); + enterRule(_localctx, 258, CypherParser::RuleOC_PropertyLookup); size_t _la = 0; #if __cplusplus > 201703L @@ -13600,21 +13686,22 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { }); try { enterOuterAlt(_localctx, 1); - setState(2199); + setState(2208); match(CypherParser::T__24); - setState(2201); + setState(2210); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2200); + setState(2209); match(CypherParser::SP); } - setState(2205); + setState(2214); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -13625,13 +13712,13 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2203); + setState(2212); oC_PropertyKeyName(); break; } case CypherParser::STAR: { - setState(2204); + setState(2213); match(CypherParser::STAR); break; } @@ -13700,7 +13787,7 @@ size_t CypherParser::OC_CaseExpressionContext::getRuleIndex() const { CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { OC_CaseExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, CypherParser::RuleOC_CaseExpression); + enterRule(_localctx, 260, CypherParser::RuleOC_CaseExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13713,27 +13800,27 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2229); + setState(2238); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 389, _ctx)) { case 1: { - setState(2207); + setState(2216); match(CypherParser::CASE); - setState(2212); + setState(2221); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2209); + setState(2218); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2208); + setState(2217); match(CypherParser::SP); } - setState(2211); + setState(2220); oC_CaseAlternative(); break; } @@ -13741,7 +13828,7 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2214); + setState(2223); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 385, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -13749,33 +13836,33 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { } case 2: { - setState(2216); + setState(2225); match(CypherParser::CASE); - setState(2218); + setState(2227); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2217); + setState(2226); match(CypherParser::SP); } - setState(2220); + setState(2229); oC_Expression(); - setState(2225); + setState(2234); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2222); + setState(2231); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2221); + setState(2230); match(CypherParser::SP); } - setState(2224); + setState(2233); oC_CaseAlternative(); break; } @@ -13783,7 +13870,7 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2227); + setState(2236); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 388, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -13793,30 +13880,30 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2239); + setState(2248); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 392, _ctx)) { case 1: { - setState(2232); + setState(2241); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2231); + setState(2240); match(CypherParser::SP); } - setState(2234); + setState(2243); match(CypherParser::ELSE); - setState(2236); + setState(2245); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2235); + setState(2244); match(CypherParser::SP); } - setState(2238); + setState(2247); oC_Expression(); break; } @@ -13824,15 +13911,15 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2242); + setState(2251); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2241); + setState(2250); match(CypherParser::SP); } - setState(2244); + setState(2253); match(CypherParser::END); } @@ -13883,7 +13970,7 @@ size_t CypherParser::OC_CaseAlternativeContext::getRuleIndex() const { CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { OC_CaseAlternativeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, CypherParser::RuleOC_CaseAlternative); + enterRule(_localctx, 262, CypherParser::RuleOC_CaseAlternative); size_t _la = 0; #if __cplusplus > 201703L @@ -13895,37 +13982,37 @@ CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { }); try { enterOuterAlt(_localctx, 1); - setState(2246); + setState(2255); match(CypherParser::WHEN); - setState(2248); + setState(2257); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2247); + setState(2256); match(CypherParser::SP); } - setState(2250); + setState(2259); oC_Expression(); - setState(2252); + setState(2261); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2251); + setState(2260); match(CypherParser::SP); } - setState(2254); + setState(2263); match(CypherParser::THEN); - setState(2256); + setState(2265); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2255); + setState(2264); match(CypherParser::SP); } - setState(2258); + setState(2267); oC_Expression(); } @@ -13956,7 +14043,7 @@ size_t CypherParser::OC_VariableContext::getRuleIndex() const { CypherParser::OC_VariableContext* CypherParser::oC_Variable() { OC_VariableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, CypherParser::RuleOC_Variable); + enterRule(_localctx, 264, CypherParser::RuleOC_Variable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13967,7 +14054,7 @@ CypherParser::OC_VariableContext* CypherParser::oC_Variable() { }); try { enterOuterAlt(_localctx, 1); - setState(2260); + setState(2269); oC_SymbolicName(); } @@ -14002,7 +14089,7 @@ size_t CypherParser::OC_NumberLiteralContext::getRuleIndex() const { CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { OC_NumberLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, CypherParser::RuleOC_NumberLiteral); + enterRule(_localctx, 266, CypherParser::RuleOC_NumberLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14012,19 +14099,19 @@ CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { exitRule(); }); try { - setState(2264); + setState(2273); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2262); + setState(2271); oC_DoubleLiteral(); break; } case CypherParser::DecimalInteger: { enterOuterAlt(_localctx, 2); - setState(2263); + setState(2272); oC_IntegerLiteral(); break; } @@ -14065,7 +14152,7 @@ size_t CypherParser::OC_ParameterContext::getRuleIndex() const { CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { OC_ParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, CypherParser::RuleOC_Parameter); + enterRule(_localctx, 268, CypherParser::RuleOC_Parameter); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14076,13 +14163,14 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2266); + setState(2275); match(CypherParser::T__25); - setState(2269); + setState(2278); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -14093,13 +14181,13 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2267); + setState(2276); oC_SymbolicName(); break; } case CypherParser::DecimalInteger: { - setState(2268); + setState(2277); match(CypherParser::DecimalInteger); break; } @@ -14144,7 +14232,7 @@ size_t CypherParser::OC_PropertyExpressionContext::getRuleIndex() const { CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression() { OC_PropertyExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, CypherParser::RuleOC_PropertyExpression); + enterRule(_localctx, 270, CypherParser::RuleOC_PropertyExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14156,17 +14244,17 @@ CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression( }); try { enterOuterAlt(_localctx, 1); - setState(2271); + setState(2280); oC_Atom(); - setState(2273); + setState(2282); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2272); + setState(2281); match(CypherParser::SP); } - setState(2275); + setState(2284); oC_PropertyLookup(); } @@ -14197,7 +14285,7 @@ size_t CypherParser::OC_PropertyKeyNameContext::getRuleIndex() const { CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { OC_PropertyKeyNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, CypherParser::RuleOC_PropertyKeyName); + enterRule(_localctx, 272, CypherParser::RuleOC_PropertyKeyName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14208,7 +14296,7 @@ CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { }); try { enterOuterAlt(_localctx, 1); - setState(2277); + setState(2286); oC_SchemaName(); } @@ -14239,7 +14327,7 @@ size_t CypherParser::OC_IntegerLiteralContext::getRuleIndex() const { CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { OC_IntegerLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, CypherParser::RuleOC_IntegerLiteral); + enterRule(_localctx, 274, CypherParser::RuleOC_IntegerLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14250,7 +14338,7 @@ CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2279); + setState(2288); match(CypherParser::DecimalInteger); } @@ -14281,7 +14369,7 @@ size_t CypherParser::OC_DoubleLiteralContext::getRuleIndex() const { CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { OC_DoubleLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, CypherParser::RuleOC_DoubleLiteral); + enterRule(_localctx, 276, CypherParser::RuleOC_DoubleLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14292,7 +14380,7 @@ CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2281); + setState(2290); match(CypherParser::RegularDecimalReal); } @@ -14323,7 +14411,7 @@ size_t CypherParser::OC_SchemaNameContext::getRuleIndex() const { CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { OC_SchemaNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 276, CypherParser::RuleOC_SchemaName); + enterRule(_localctx, 278, CypherParser::RuleOC_SchemaName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14334,7 +14422,7 @@ CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { }); try { enterOuterAlt(_localctx, 1); - setState(2283); + setState(2292); oC_SymbolicName(); } @@ -14377,7 +14465,7 @@ size_t CypherParser::OC_SymbolicNameContext::getRuleIndex() const { CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { OC_SymbolicNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 278, CypherParser::RuleOC_SymbolicName); + enterRule(_localctx, 280, CypherParser::RuleOC_SymbolicName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14387,19 +14475,19 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { exitRule(); }); try { - setState(2290); + setState(2299); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::UnescapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2285); + setState(2294); match(CypherParser::UnescapedSymbolicName); break; } case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(2286); + setState(2295); antlrcpp::downCast(_localctx)->escapedsymbolicnameToken = match(CypherParser::EscapedSymbolicName); if ((antlrcpp::downCast(_localctx)->escapedsymbolicnameToken != nullptr ? antlrcpp::downCast(_localctx)->escapedsymbolicnameToken->getText() : "") == "``") { notifyEmptyToken(antlrcpp::downCast(_localctx)->escapedsymbolicnameToken); } break; @@ -14407,13 +14495,14 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::HexLetter: { enterOuterAlt(_localctx, 3); - setState(2288); + setState(2297); match(CypherParser::HexLetter); break; } case CypherParser::COMMENT: case CypherParser::EXPORT: + case CypherParser::IMPORT: case CypherParser::DATABASE: case CypherParser::NODE: case CypherParser::REL: @@ -14422,7 +14511,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::COUNT: case CypherParser::END: { enterOuterAlt(_localctx, 4); - setState(2289); + setState(2298); kU_NonReservedKeywords(); break; } @@ -14475,6 +14564,10 @@ tree::TerminalNode* CypherParser::KU_NonReservedKeywordsContext::IN() { return getToken(CypherParser::IN, 0); } +tree::TerminalNode* CypherParser::KU_NonReservedKeywordsContext::IMPORT() { + return getToken(CypherParser::IMPORT, 0); +} + tree::TerminalNode* CypherParser::KU_NonReservedKeywordsContext::EXPORT() { return getToken(CypherParser::EXPORT, 0); } @@ -14491,7 +14584,7 @@ size_t CypherParser::KU_NonReservedKeywordsContext::getRuleIndex() const { CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeywords() { KU_NonReservedKeywordsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 280, CypherParser::RuleKU_NonReservedKeywords); + enterRule(_localctx, 282, CypherParser::RuleKU_NonReservedKeywords); size_t _la = 0; #if __cplusplus > 201703L @@ -14503,11 +14596,11 @@ CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeyword }); try { enterOuterAlt(_localctx, 1); - setState(2292); + setState(2301); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 63191132271542272) != 0) || ((((_la - 66) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 66)) & -8644659484737667055) != 0))) { + ((1ULL << _la) & 135248726309470208) != 0) || ((((_la - 67) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 67)) & -8644659484737667055) != 0))) { _errHandler->recoverInline(this); } else { @@ -14539,7 +14632,7 @@ size_t CypherParser::OC_LeftArrowHeadContext::getRuleIndex() const { CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { OC_LeftArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 282, CypherParser::RuleOC_LeftArrowHead); + enterRule(_localctx, 284, CypherParser::RuleOC_LeftArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -14551,7 +14644,7 @@ CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2294); + setState(2303); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 2013274112) != 0))) { @@ -14586,7 +14679,7 @@ size_t CypherParser::OC_RightArrowHeadContext::getRuleIndex() const { CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { OC_RightArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 284, CypherParser::RuleOC_RightArrowHead); + enterRule(_localctx, 286, CypherParser::RuleOC_RightArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -14598,7 +14691,7 @@ CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2296); + setState(2305); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 32212287488) != 0))) { @@ -14637,7 +14730,7 @@ size_t CypherParser::OC_DashContext::getRuleIndex() const { CypherParser::OC_DashContext* CypherParser::oC_Dash() { OC_DashContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 286, CypherParser::RuleOC_Dash); + enterRule(_localctx, 288, CypherParser::RuleOC_Dash); size_t _la = 0; #if __cplusplus > 201703L @@ -14649,7 +14742,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { }); try { enterOuterAlt(_localctx, 1); - setState(2298); + setState(2307); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70334384439296) != 0) || _la == CypherParser::MINUS)) { @@ -14672,7 +14765,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { bool CypherParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { - case 32: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); + case 33: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); default: break; diff --git a/third_party/antlr4_cypher/include/cypher_lexer.h b/third_party/antlr4_cypher/include/cypher_lexer.h index c96d9bf8be..ef7e9367f0 100644 --- a/third_party/antlr4_cypher/include/cypher_lexer.h +++ b/third_party/antlr4_cypher/include/cypher_lexer.h @@ -20,25 +20,25 @@ class CypherLexer : public antlr4::Lexer { T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, T__44 = 45, CALL = 46, COMMENT = 47, MACRO = 48, GLOB = 49, COPY = 50, - FROM = 51, COLUMN = 52, EXPORT = 53, DATABASE = 54, NODE = 55, TABLE = 56, - GROUP = 57, RDFGRAPH = 58, DROP = 59, ALTER = 60, DEFAULT = 61, RENAME = 62, - ADD = 63, PRIMARY = 64, KEY = 65, REL = 66, TO = 67, EXPLAIN = 68, PROFILE = 69, - BEGIN = 70, TRANSACTION = 71, READ = 72, ONLY = 73, WRITE = 74, COMMIT = 75, - COMMIT_SKIP_CHECKPOINT = 76, ROLLBACK = 77, ROLLBACK_SKIP_CHECKPOINT = 78, - INSTALL = 79, EXTENSION = 80, UNION = 81, ALL = 82, LOAD = 83, HEADERS = 84, - OPTIONAL = 85, MATCH = 86, UNWIND = 87, CREATE = 88, MERGE = 89, ON = 90, - SET = 91, DETACH = 92, DELETE = 93, WITH = 94, RETURN = 95, DISTINCT = 96, - STAR = 97, AS = 98, ORDER = 99, BY = 100, L_SKIP = 101, LIMIT = 102, - ASCENDING = 103, ASC = 104, DESCENDING = 105, DESC = 106, WHERE = 107, - SHORTEST = 108, OR = 109, XOR = 110, AND = 111, NOT = 112, INVALID_NOT_EQUAL = 113, - MINUS = 114, FACTORIAL = 115, COLON = 116, IN = 117, STARTS = 118, ENDS = 119, - CONTAINS = 120, IS = 121, NULL_ = 122, TRUE = 123, FALSE = 124, COUNT = 125, - EXISTS = 126, CASE = 127, ELSE = 128, END = 129, WHEN = 130, THEN = 131, - StringLiteral = 132, EscapedChar = 133, DecimalInteger = 134, HexLetter = 135, - HexDigit = 136, Digit = 137, NonZeroDigit = 138, NonZeroOctDigit = 139, - ZeroDigit = 140, RegularDecimalReal = 141, UnescapedSymbolicName = 142, - IdentifierStart = 143, IdentifierPart = 144, EscapedSymbolicName = 145, - SP = 146, WHITESPACE = 147, Comment = 148, Unknown = 149 + FROM = 51, COLUMN = 52, EXPORT = 53, IMPORT = 54, DATABASE = 55, NODE = 56, + TABLE = 57, GROUP = 58, RDFGRAPH = 59, DROP = 60, ALTER = 61, DEFAULT = 62, + RENAME = 63, ADD = 64, PRIMARY = 65, KEY = 66, REL = 67, TO = 68, EXPLAIN = 69, + PROFILE = 70, BEGIN = 71, TRANSACTION = 72, READ = 73, ONLY = 74, WRITE = 75, + COMMIT = 76, COMMIT_SKIP_CHECKPOINT = 77, ROLLBACK = 78, ROLLBACK_SKIP_CHECKPOINT = 79, + INSTALL = 80, EXTENSION = 81, UNION = 82, ALL = 83, LOAD = 84, HEADERS = 85, + OPTIONAL = 86, MATCH = 87, UNWIND = 88, CREATE = 89, MERGE = 90, ON = 91, + SET = 92, DETACH = 93, DELETE = 94, WITH = 95, RETURN = 96, DISTINCT = 97, + STAR = 98, AS = 99, ORDER = 100, BY = 101, L_SKIP = 102, LIMIT = 103, + ASCENDING = 104, ASC = 105, DESCENDING = 106, DESC = 107, WHERE = 108, + SHORTEST = 109, OR = 110, XOR = 111, AND = 112, NOT = 113, INVALID_NOT_EQUAL = 114, + MINUS = 115, FACTORIAL = 116, COLON = 117, IN = 118, STARTS = 119, ENDS = 120, + CONTAINS = 121, IS = 122, NULL_ = 123, TRUE = 124, FALSE = 125, COUNT = 126, + EXISTS = 127, CASE = 128, ELSE = 129, END = 130, WHEN = 131, THEN = 132, + StringLiteral = 133, EscapedChar = 134, DecimalInteger = 135, HexLetter = 136, + HexDigit = 137, Digit = 138, NonZeroDigit = 139, NonZeroOctDigit = 140, + ZeroDigit = 141, RegularDecimalReal = 142, UnescapedSymbolicName = 143, + IdentifierStart = 144, IdentifierPart = 145, EscapedSymbolicName = 146, + SP = 147, WHITESPACE = 148, Comment = 149, Unknown = 150 }; explicit CypherLexer(antlr4::CharStream *input); diff --git a/third_party/antlr4_cypher/include/cypher_parser.h b/third_party/antlr4_cypher/include/cypher_parser.h index 563a8b050e..7b1e2a803f 100644 --- a/third_party/antlr4_cypher/include/cypher_parser.h +++ b/third_party/antlr4_cypher/include/cypher_parser.h @@ -20,78 +20,78 @@ class CypherParser : public antlr4::Parser { T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, T__44 = 45, CALL = 46, COMMENT = 47, MACRO = 48, GLOB = 49, COPY = 50, - FROM = 51, COLUMN = 52, EXPORT = 53, DATABASE = 54, NODE = 55, TABLE = 56, - GROUP = 57, RDFGRAPH = 58, DROP = 59, ALTER = 60, DEFAULT = 61, RENAME = 62, - ADD = 63, PRIMARY = 64, KEY = 65, REL = 66, TO = 67, EXPLAIN = 68, PROFILE = 69, - BEGIN = 70, TRANSACTION = 71, READ = 72, ONLY = 73, WRITE = 74, COMMIT = 75, - COMMIT_SKIP_CHECKPOINT = 76, ROLLBACK = 77, ROLLBACK_SKIP_CHECKPOINT = 78, - INSTALL = 79, EXTENSION = 80, UNION = 81, ALL = 82, LOAD = 83, HEADERS = 84, - OPTIONAL = 85, MATCH = 86, UNWIND = 87, CREATE = 88, MERGE = 89, ON = 90, - SET = 91, DETACH = 92, DELETE = 93, WITH = 94, RETURN = 95, DISTINCT = 96, - STAR = 97, AS = 98, ORDER = 99, BY = 100, L_SKIP = 101, LIMIT = 102, - ASCENDING = 103, ASC = 104, DESCENDING = 105, DESC = 106, WHERE = 107, - SHORTEST = 108, OR = 109, XOR = 110, AND = 111, NOT = 112, INVALID_NOT_EQUAL = 113, - MINUS = 114, FACTORIAL = 115, COLON = 116, IN = 117, STARTS = 118, ENDS = 119, - CONTAINS = 120, IS = 121, NULL_ = 122, TRUE = 123, FALSE = 124, COUNT = 125, - EXISTS = 126, CASE = 127, ELSE = 128, END = 129, WHEN = 130, THEN = 131, - StringLiteral = 132, EscapedChar = 133, DecimalInteger = 134, HexLetter = 135, - HexDigit = 136, Digit = 137, NonZeroDigit = 138, NonZeroOctDigit = 139, - ZeroDigit = 140, RegularDecimalReal = 141, UnescapedSymbolicName = 142, - IdentifierStart = 143, IdentifierPart = 144, EscapedSymbolicName = 145, - SP = 146, WHITESPACE = 147, Comment = 148, Unknown = 149 + FROM = 51, COLUMN = 52, EXPORT = 53, IMPORT = 54, DATABASE = 55, NODE = 56, + TABLE = 57, GROUP = 58, RDFGRAPH = 59, DROP = 60, ALTER = 61, DEFAULT = 62, + RENAME = 63, ADD = 64, PRIMARY = 65, KEY = 66, REL = 67, TO = 68, EXPLAIN = 69, + PROFILE = 70, BEGIN = 71, TRANSACTION = 72, READ = 73, ONLY = 74, WRITE = 75, + COMMIT = 76, COMMIT_SKIP_CHECKPOINT = 77, ROLLBACK = 78, ROLLBACK_SKIP_CHECKPOINT = 79, + INSTALL = 80, EXTENSION = 81, UNION = 82, ALL = 83, LOAD = 84, HEADERS = 85, + OPTIONAL = 86, MATCH = 87, UNWIND = 88, CREATE = 89, MERGE = 90, ON = 91, + SET = 92, DETACH = 93, DELETE = 94, WITH = 95, RETURN = 96, DISTINCT = 97, + STAR = 98, AS = 99, ORDER = 100, BY = 101, L_SKIP = 102, LIMIT = 103, + ASCENDING = 104, ASC = 105, DESCENDING = 106, DESC = 107, WHERE = 108, + SHORTEST = 109, OR = 110, XOR = 111, AND = 112, NOT = 113, INVALID_NOT_EQUAL = 114, + MINUS = 115, FACTORIAL = 116, COLON = 117, IN = 118, STARTS = 119, ENDS = 120, + CONTAINS = 121, IS = 122, NULL_ = 123, TRUE = 124, FALSE = 125, COUNT = 126, + EXISTS = 127, CASE = 128, ELSE = 129, END = 130, WHEN = 131, THEN = 132, + StringLiteral = 133, EscapedChar = 134, DecimalInteger = 135, HexLetter = 136, + HexDigit = 137, Digit = 138, NonZeroDigit = 139, NonZeroOctDigit = 140, + ZeroDigit = 141, RegularDecimalReal = 142, UnescapedSymbolicName = 143, + IdentifierStart = 144, IdentifierPart = 145, EscapedSymbolicName = 146, + SP = 147, WHITESPACE = 148, Comment = 149, Unknown = 150 }; enum { RuleKu_Statements = 0, RuleOC_Cypher = 1, RuleOC_Statement = 2, RuleKU_CopyFrom = 3, RuleKU_ColumnNames = 4, RuleKU_CopyFromByColumn = 5, RuleKU_CopyTO = 6, - RuleKU_ExportDatabase = 7, RuleKU_StandaloneCall = 8, RuleKU_CommentOn = 9, - RuleKU_CreateMacro = 10, RuleKU_PositionalArgs = 11, RuleKU_DefaultArg = 12, - RuleKU_FilePaths = 13, RuleKU_ParsingOptions = 14, RuleKU_ParsingOption = 15, - RuleKU_DDL = 16, RuleKU_CreateNodeTable = 17, RuleKU_CreateRelTable = 18, - RuleKU_CreateRelTableGroup = 19, RuleKU_RelTableConnection = 20, RuleKU_CreateRdfGraph = 21, - RuleKU_DropTable = 22, RuleKU_AlterTable = 23, RuleKU_AlterOptions = 24, - RuleKU_AddProperty = 25, RuleKU_DropProperty = 26, RuleKU_RenameTable = 27, - RuleKU_RenameProperty = 28, RuleKU_PropertyDefinitions = 29, RuleKU_PropertyDefinition = 30, - RuleKU_CreateNodeConstraint = 31, RuleKU_DataType = 32, RuleKU_ListIdentifiers = 33, - RuleKU_ListIdentifier = 34, RuleOC_AnyCypherOption = 35, RuleOC_Explain = 36, - RuleOC_Profile = 37, RuleKU_Transaction = 38, RuleKU_Extension = 39, - RuleKU_LoadExtension = 40, RuleKU_InstallExtension = 41, RuleOC_Query = 42, - RuleOC_RegularQuery = 43, RuleOC_Union = 44, RuleOC_SingleQuery = 45, - RuleOC_SinglePartQuery = 46, RuleOC_MultiPartQuery = 47, RuleKU_QueryPart = 48, - RuleOC_UpdatingClause = 49, RuleOC_ReadingClause = 50, RuleKU_LoadFrom = 51, - RuleKU_InQueryCall = 52, RuleOC_Match = 53, RuleOC_Unwind = 54, RuleOC_Create = 55, - RuleOC_Merge = 56, RuleOC_MergeAction = 57, RuleOC_Set = 58, RuleOC_SetItem = 59, - RuleOC_Delete = 60, RuleOC_With = 61, RuleOC_Return = 62, RuleOC_ProjectionBody = 63, - RuleOC_ProjectionItems = 64, RuleOC_ProjectionItem = 65, RuleOC_Order = 66, - RuleOC_Skip = 67, RuleOC_Limit = 68, RuleOC_SortItem = 69, RuleOC_Where = 70, - RuleOC_Pattern = 71, RuleOC_PatternPart = 72, RuleOC_AnonymousPatternPart = 73, - RuleOC_PatternElement = 74, RuleOC_NodePattern = 75, RuleOC_PatternElementChain = 76, - RuleOC_RelationshipPattern = 77, RuleOC_RelationshipDetail = 78, RuleKU_Properties = 79, - RuleOC_RelationshipTypes = 80, RuleOC_NodeLabels = 81, RuleOC_NodeLabel = 82, - RuleOC_RangeLiteral = 83, RuleKU_RecursiveRelationshipComprehension = 84, - RuleKU_IntermediateNodeProjectionItems = 85, RuleKU_IntermediateRelProjectionItems = 86, - RuleOC_LowerBound = 87, RuleOC_UpperBound = 88, RuleOC_LabelName = 89, - RuleOC_RelTypeName = 90, RuleOC_Expression = 91, RuleOC_OrExpression = 92, - RuleOC_XorExpression = 93, RuleOC_AndExpression = 94, RuleOC_NotExpression = 95, - RuleOC_ComparisonExpression = 96, RuleKU_ComparisonOperator = 97, RuleKU_BitwiseOrOperatorExpression = 98, - RuleKU_BitwiseAndOperatorExpression = 99, RuleKU_BitShiftOperatorExpression = 100, - RuleKU_BitShiftOperator = 101, RuleOC_AddOrSubtractExpression = 102, - RuleKU_AddOrSubtractOperator = 103, RuleOC_MultiplyDivideModuloExpression = 104, - RuleKU_MultiplyDivideModuloOperator = 105, RuleOC_PowerOfExpression = 106, - RuleOC_UnaryAddSubtractOrFactorialExpression = 107, RuleOC_StringListNullOperatorExpression = 108, - RuleOC_ListOperatorExpression = 109, RuleOC_StringOperatorExpression = 110, - RuleOC_RegularExpression = 111, RuleOC_NullOperatorExpression = 112, - RuleOC_PropertyOrLabelsExpression = 113, RuleOC_Atom = 114, RuleOC_Literal = 115, - RuleOC_BooleanLiteral = 116, RuleOC_ListLiteral = 117, RuleKU_ListEntry = 118, - RuleKU_StructLiteral = 119, RuleKU_StructField = 120, RuleOC_ParenthesizedExpression = 121, - RuleOC_FunctionInvocation = 122, RuleOC_FunctionName = 123, RuleKU_FunctionParameter = 124, - RuleOC_PathPatterns = 125, RuleOC_ExistSubquery = 126, RuleKU_CountSubquery = 127, - RuleOC_PropertyLookup = 128, RuleOC_CaseExpression = 129, RuleOC_CaseAlternative = 130, - RuleOC_Variable = 131, RuleOC_NumberLiteral = 132, RuleOC_Parameter = 133, - RuleOC_PropertyExpression = 134, RuleOC_PropertyKeyName = 135, RuleOC_IntegerLiteral = 136, - RuleOC_DoubleLiteral = 137, RuleOC_SchemaName = 138, RuleOC_SymbolicName = 139, - RuleKU_NonReservedKeywords = 140, RuleOC_LeftArrowHead = 141, RuleOC_RightArrowHead = 142, - RuleOC_Dash = 143 + RuleKU_ExportDatabase = 7, RuleKU_ImportDatabase = 8, RuleKU_StandaloneCall = 9, + RuleKU_CommentOn = 10, RuleKU_CreateMacro = 11, RuleKU_PositionalArgs = 12, + RuleKU_DefaultArg = 13, RuleKU_FilePaths = 14, RuleKU_ParsingOptions = 15, + RuleKU_ParsingOption = 16, RuleKU_DDL = 17, RuleKU_CreateNodeTable = 18, + RuleKU_CreateRelTable = 19, RuleKU_CreateRelTableGroup = 20, RuleKU_RelTableConnection = 21, + RuleKU_CreateRdfGraph = 22, RuleKU_DropTable = 23, RuleKU_AlterTable = 24, + RuleKU_AlterOptions = 25, RuleKU_AddProperty = 26, RuleKU_DropProperty = 27, + RuleKU_RenameTable = 28, RuleKU_RenameProperty = 29, RuleKU_PropertyDefinitions = 30, + RuleKU_PropertyDefinition = 31, RuleKU_CreateNodeConstraint = 32, RuleKU_DataType = 33, + RuleKU_ListIdentifiers = 34, RuleKU_ListIdentifier = 35, RuleOC_AnyCypherOption = 36, + RuleOC_Explain = 37, RuleOC_Profile = 38, RuleKU_Transaction = 39, RuleKU_Extension = 40, + RuleKU_LoadExtension = 41, RuleKU_InstallExtension = 42, RuleOC_Query = 43, + RuleOC_RegularQuery = 44, RuleOC_Union = 45, RuleOC_SingleQuery = 46, + RuleOC_SinglePartQuery = 47, RuleOC_MultiPartQuery = 48, RuleKU_QueryPart = 49, + RuleOC_UpdatingClause = 50, RuleOC_ReadingClause = 51, RuleKU_LoadFrom = 52, + RuleKU_InQueryCall = 53, RuleOC_Match = 54, RuleOC_Unwind = 55, RuleOC_Create = 56, + RuleOC_Merge = 57, RuleOC_MergeAction = 58, RuleOC_Set = 59, RuleOC_SetItem = 60, + RuleOC_Delete = 61, RuleOC_With = 62, RuleOC_Return = 63, RuleOC_ProjectionBody = 64, + RuleOC_ProjectionItems = 65, RuleOC_ProjectionItem = 66, RuleOC_Order = 67, + RuleOC_Skip = 68, RuleOC_Limit = 69, RuleOC_SortItem = 70, RuleOC_Where = 71, + RuleOC_Pattern = 72, RuleOC_PatternPart = 73, RuleOC_AnonymousPatternPart = 74, + RuleOC_PatternElement = 75, RuleOC_NodePattern = 76, RuleOC_PatternElementChain = 77, + RuleOC_RelationshipPattern = 78, RuleOC_RelationshipDetail = 79, RuleKU_Properties = 80, + RuleOC_RelationshipTypes = 81, RuleOC_NodeLabels = 82, RuleOC_NodeLabel = 83, + RuleOC_RangeLiteral = 84, RuleKU_RecursiveRelationshipComprehension = 85, + RuleKU_IntermediateNodeProjectionItems = 86, RuleKU_IntermediateRelProjectionItems = 87, + RuleOC_LowerBound = 88, RuleOC_UpperBound = 89, RuleOC_LabelName = 90, + RuleOC_RelTypeName = 91, RuleOC_Expression = 92, RuleOC_OrExpression = 93, + RuleOC_XorExpression = 94, RuleOC_AndExpression = 95, RuleOC_NotExpression = 96, + RuleOC_ComparisonExpression = 97, RuleKU_ComparisonOperator = 98, RuleKU_BitwiseOrOperatorExpression = 99, + RuleKU_BitwiseAndOperatorExpression = 100, RuleKU_BitShiftOperatorExpression = 101, + RuleKU_BitShiftOperator = 102, RuleOC_AddOrSubtractExpression = 103, + RuleKU_AddOrSubtractOperator = 104, RuleOC_MultiplyDivideModuloExpression = 105, + RuleKU_MultiplyDivideModuloOperator = 106, RuleOC_PowerOfExpression = 107, + RuleOC_UnaryAddSubtractOrFactorialExpression = 108, RuleOC_StringListNullOperatorExpression = 109, + RuleOC_ListOperatorExpression = 110, RuleOC_StringOperatorExpression = 111, + RuleOC_RegularExpression = 112, RuleOC_NullOperatorExpression = 113, + RuleOC_PropertyOrLabelsExpression = 114, RuleOC_Atom = 115, RuleOC_Literal = 116, + RuleOC_BooleanLiteral = 117, RuleOC_ListLiteral = 118, RuleKU_ListEntry = 119, + RuleKU_StructLiteral = 120, RuleKU_StructField = 121, RuleOC_ParenthesizedExpression = 122, + RuleOC_FunctionInvocation = 123, RuleOC_FunctionName = 124, RuleKU_FunctionParameter = 125, + RuleOC_PathPatterns = 126, RuleOC_ExistSubquery = 127, RuleKU_CountSubquery = 128, + RuleOC_PropertyLookup = 129, RuleOC_CaseExpression = 130, RuleOC_CaseAlternative = 131, + RuleOC_Variable = 132, RuleOC_NumberLiteral = 133, RuleOC_Parameter = 134, + RuleOC_PropertyExpression = 135, RuleOC_PropertyKeyName = 136, RuleOC_IntegerLiteral = 137, + RuleOC_DoubleLiteral = 138, RuleOC_SchemaName = 139, RuleOC_SymbolicName = 140, + RuleKU_NonReservedKeywords = 141, RuleOC_LeftArrowHead = 142, RuleOC_RightArrowHead = 143, + RuleOC_Dash = 144 }; explicit CypherParser(antlr4::TokenStream *input); @@ -119,6 +119,7 @@ class CypherParser : public antlr4::Parser { class KU_CopyFromByColumnContext; class KU_CopyTOContext; class KU_ExportDatabaseContext; + class KU_ImportDatabaseContext; class KU_StandaloneCallContext; class KU_CommentOnContext; class KU_CreateMacroContext; @@ -300,6 +301,7 @@ class CypherParser : public antlr4::Parser { KU_TransactionContext *kU_Transaction(); KU_ExtensionContext *kU_Extension(); KU_ExportDatabaseContext *kU_ExportDatabase(); + KU_ImportDatabaseContext *kU_ImportDatabase(); }; @@ -391,6 +393,21 @@ class CypherParser : public antlr4::Parser { KU_ExportDatabaseContext* kU_ExportDatabase(); + class KU_ImportDatabaseContext : public antlr4::ParserRuleContext { + public: + KU_ImportDatabaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *IMPORT(); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + antlr4::tree::TerminalNode *DATABASE(); + antlr4::tree::TerminalNode *StringLiteral(); + + + }; + + KU_ImportDatabaseContext* kU_ImportDatabase(); + class KU_StandaloneCallContext : public antlr4::ParserRuleContext { public: KU_StandaloneCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); @@ -2328,6 +2345,7 @@ class CypherParser : public antlr4::Parser { antlr4::tree::TerminalNode *BEGIN(); antlr4::tree::TerminalNode *END(); antlr4::tree::TerminalNode *IN(); + antlr4::tree::TerminalNode *IMPORT(); antlr4::tree::TerminalNode *EXPORT(); antlr4::tree::TerminalNode *DATABASE();