From 6af5687a99d5ef5142c1fb99c7325b40633b904d Mon Sep 17 00:00:00 2001 From: Arun Sharma Date: Mon, 25 May 2026 11:58:46 -0700 Subject: [PATCH] Support per-pair rel multiplicity --- scripts/antlr4/Cypher.g4 | 8 +- scripts/antlr4/hash.md5 | 2 +- src/antlr4/Cypher.g4 | 8 +- src/binder/bind/bind_ddl.cpp | 22 +- src/catalog/catalog.cpp | 7 +- .../catalog_entry/rel_group_catalog_entry.cpp | 53 +- .../binder/ddl/bound_create_table_info.h | 18 +- .../catalog_entry/rel_group_catalog_entry.h | 23 +- src/include/parser/ddl/create_table_info.h | 20 +- src/include/storage/storage_version_info.h | 7 +- src/include/storage/table/rel_table_data.h | 6 +- src/main/database_manager.cpp | 7 +- src/parser/transform/transform_ddl.cpp | 13 +- .../operator/persistent/rel_batch_insert.cpp | 3 +- src/storage/table/rel_table.cpp | 2 +- src/storage/table/rel_table_data.cpp | 6 +- .../dml_rel/create/create_small.test | 28 + test/test_files/rel_group/edge_cases.test | 54 + test/test_files/storage_version.test | 8 +- third_party/antlr4_cypher/cypher_parser.cpp | 7074 +++++++++-------- .../antlr4_cypher/include/cypher_parser.h | 144 +- 21 files changed, 3964 insertions(+), 3549 deletions(-) diff --git a/scripts/antlr4/Cypher.g4 b/scripts/antlr4/Cypher.g4 index 0e9c5702f7..0cf95f2297 100644 --- a/scripts/antlr4/Cypher.g4 +++ b/scripts/antlr4/Cypher.g4 @@ -362,7 +362,7 @@ iC_CreateNodeTable iC_CreateRelTable : CREATE SP REL SP TABLE ( SP GROUP )? ( SP iC_IfNotExists )? SP oC_SchemaName SP? '(' SP? - iC_FromToConnections SP? ( + iC_CreateFromToConnections SP? ( ( ',' SP? iC_PropertyDefinitions SP? )? ( ',' SP? oC_SymbolicName SP? )? // Constraints ')' @@ -385,6 +385,12 @@ iC_IndexRelationshipPattern iC_IndexPropertyPattern : '(' SP? oC_Variable SP? '.' SP? oC_PropertyKeyName SP? ')' ; +iC_CreateFromToConnections + : iC_CreateFromToConnection ( SP? ',' SP? iC_CreateFromToConnection )* ; + +iC_CreateFromToConnection + : FROM SP oC_SchemaName SP TO SP oC_SchemaName ( SP oC_SymbolicName )? ; + iC_FromToConnections : iC_FromToConnection ( SP? ',' SP? iC_FromToConnection )* ; diff --git a/scripts/antlr4/hash.md5 b/scripts/antlr4/hash.md5 index 35bab9e9f5..2d937df2c2 100644 --- a/scripts/antlr4/hash.md5 +++ b/scripts/antlr4/hash.md5 @@ -1 +1 @@ -8988f28d4f569c88df6df4783174efb9 +c7234221b1dd80ed6bfdd0373cf59c0d diff --git a/src/antlr4/Cypher.g4 b/src/antlr4/Cypher.g4 index 3638a6d40e..6f3dd9ccce 100644 --- a/src/antlr4/Cypher.g4 +++ b/src/antlr4/Cypher.g4 @@ -109,7 +109,7 @@ iC_CreateNodeTable iC_CreateRelTable : CREATE SP REL SP TABLE ( SP GROUP )? ( SP iC_IfNotExists )? SP oC_SchemaName SP? '(' SP? - iC_FromToConnections SP? ( + iC_CreateFromToConnections SP? ( ( ',' SP? iC_PropertyDefinitions SP? )? ( ',' SP? oC_SymbolicName SP? )? // Constraints ')' @@ -132,6 +132,12 @@ iC_IndexRelationshipPattern iC_IndexPropertyPattern : '(' SP? oC_Variable SP? '.' SP? oC_PropertyKeyName SP? ')' ; +iC_CreateFromToConnections + : iC_CreateFromToConnection ( SP? ',' SP? iC_CreateFromToConnection )* ; + +iC_CreateFromToConnection + : FROM SP oC_SchemaName SP TO SP oC_SchemaName ( SP oC_SymbolicName )? ; + iC_FromToConnections : iC_FromToConnection ( SP? ',' SP? iC_FromToConnection )* ; diff --git a/src/binder/bind/bind_ddl.cpp b/src/binder/bind/bind_ddl.cpp index d2b5487c35..d9c2686c8b 100644 --- a/src/binder/bind/bind_ddl.cpp +++ b/src/binder/bind/bind_ddl.cpp @@ -312,8 +312,10 @@ BoundCreateTableInfo Binder::bindCreateRelTableGroupInfo(const CreateTableInfo* } // Bind from to pairs node_table_id_pair_set_t nodePairsSet; - std::vector nodePairs; - for (auto& [srcTableName, dstTableName] : extraInfo.srcDstTablePairs) { + std::vector relTableInfos; + for (auto& connection : extraInfo.connections) { + const auto& srcTableName = connection.srcTableName; + const auto& dstTableName = connection.dstTableName; auto [srcEntry, srcDbName] = bindNodeTableEntry(srcTableName); validateNodeTableType(srcEntry); auto [dstEntry, dstDbName] = bindNodeTableEntry(dstTableName); @@ -372,12 +374,16 @@ BoundCreateTableInfo Binder::bindCreateRelTableGroupInfo(const CreateTableInfo* std::format("Found duplicate FROM-TO {}-{} pairs.", srcTableName, dstTableName)); } nodePairsSet.insert(pair); - nodePairs.emplace_back(pair); + const auto& connectionMultiplicity = connection.relMultiplicity.has_value() ? + *connection.relMultiplicity : + extraInfo.relMultiplicity; + relTableInfos.emplace_back(pair, RelMultiplicityUtils::getFwd(connectionMultiplicity), + RelMultiplicityUtils::getBwd(connectionMultiplicity)); } auto boundExtraInfo = std::make_unique( std::move(propertyDefinitions), srcMultiplicity, dstMultiplicity, storageDirection, - std::move(nodePairs), std::move(storage), std::move(storageFormat), std::move(scanFunction), - std::move(scanBindData), std::move(foreignDatabaseName)); + std::move(relTableInfos), std::move(storage), std::move(storageFormat), + std::move(scanFunction), std::move(scanBindData), std::move(foreignDatabaseName)); return BoundCreateTableInfo(CatalogEntryType::REL_GROUP_ENTRY, info->tableName, info->onConflict, std::move(boundExtraInfo), clientContext->useInternalCatalogEntry()); } @@ -488,7 +494,7 @@ std::unique_ptr Binder::bindCreateTableAs(const Statement& state case TableType::REL: { auto& extraInfo = createInfo->extraInfo->constCast(); // Currently we don't support multiple from/to pairs for create rel table as - if (extraInfo.srcDstTablePairs.size() > 1) { + if (extraInfo.connections.size() > 1) { throw BinderException( "Multiple FROM/TO pairs are not supported for CREATE REL TABLE AS."); } @@ -497,10 +503,10 @@ std::unique_ptr Binder::bindCreateTableAs(const Statement& state auto catalog = Catalog::Get(*clientContext); auto transaction = transaction::Transaction::Get(*clientContext); auto fromTable = - catalog->getTableCatalogEntry(transaction, extraInfo.srcDstTablePairs[0].first) + catalog->getTableCatalogEntry(transaction, extraInfo.connections[0].srcTableName) ->ptrCast(); auto toTable = - catalog->getTableCatalogEntry(transaction, extraInfo.srcDstTablePairs[0].second) + catalog->getTableCatalogEntry(transaction, extraInfo.connections[0].dstTableName) ->ptrCast(); auto boundCreateInfo = bindCreateRelTableGroupInfo(createInfo); auto boundCopyFromInfo = bindCopyRelFromInfo(createInfo->tableName, propertyDefinitions, diff --git a/src/catalog/catalog.cpp b/src/catalog/catalog.cpp index a565b7285c..7e8f802d1f 100644 --- a/src/catalog/catalog.cpp +++ b/src/catalog/catalog.cpp @@ -199,9 +199,10 @@ CatalogEntry* Catalog::createRelGroupEntry(Transaction* transaction, const BoundCreateTableInfo& info) { const auto extraInfo = info.extraInfo->ptrCast(); std::vector relTableInfos; - DASSERT(extraInfo->nodePairs.size() > 0); - for (auto& nodePair : extraInfo->nodePairs) { - relTableInfos.emplace_back(nodePair, tables->getNextOID()); + DASSERT(extraInfo->relTableInfos.size() > 0); + for (auto& relTableInfo : extraInfo->relTableInfos) { + relTableInfos.emplace_back(relTableInfo.nodePair, tables->getNextOID(), + relTableInfo.srcMultiplicity, relTableInfo.dstMultiplicity); } auto relGroupEntry = std::make_unique(info.tableName, extraInfo->srcMultiplicity, diff --git a/src/catalog/catalog_entry/rel_group_catalog_entry.cpp b/src/catalog/catalog_entry/rel_group_catalog_entry.cpp index ee0e17222d..37c3889766 100644 --- a/src/catalog/catalog_entry/rel_group_catalog_entry.cpp +++ b/src/catalog/catalog_entry/rel_group_catalog_entry.cpp @@ -28,7 +28,8 @@ static void upgradeLegacyStorageFormat(const std::string& storage, void RelGroupCatalogEntry::addFromToConnection(table_id_t srcTableID, table_id_t dstTableID, oid_t oid) { - relTableInfos.emplace_back(NodeTableIDPair{srcTableID, dstTableID}, oid); + relTableInfos.emplace_back(NodeTableIDPair{srcTableID, dstTableID}, oid, srcMultiplicity, + dstMultiplicity); } void RelGroupCatalogEntry::dropFromToConnection(table_id_t srcTableID, table_id_t dstTableID) { @@ -48,6 +49,10 @@ void RelTableCatalogInfo::serialize(Serializer& ser) const { nodePair.serialize(ser); ser.writeDebuggingInfo("oid"); ser.serializeValue(oid); + ser.writeDebuggingInfo("srcMultiplicity"); + ser.serializeValue(srcMultiplicity); + ser.writeDebuggingInfo("dstMultiplicity"); + ser.serializeValue(dstMultiplicity); } RelTableCatalogInfo RelTableCatalogInfo::deserialize(Deserializer& deser) { @@ -57,7 +62,15 @@ RelTableCatalogInfo RelTableCatalogInfo::deserialize(Deserializer& deser) { auto nodePair = NodeTableIDPair::deserialize(deser); deser.validateDebuggingInfo(debuggingInfo, "oid"); deser.deserializeValue(oid); - return RelTableCatalogInfo{nodePair, oid}; + auto srcMultiplicity = RelMultiplicity::MANY; + auto dstMultiplicity = RelMultiplicity::MANY; + if (deser.getStorageVersion() >= ::lbug::storage::StorageVersionInfo::STORAGE_VERSION_42) { + deser.validateDebuggingInfo(debuggingInfo, "srcMultiplicity"); + deser.deserializeValue(srcMultiplicity); + deser.validateDebuggingInfo(debuggingInfo, "dstMultiplicity"); + deser.deserializeValue(dstMultiplicity); + } + return RelTableCatalogInfo{nodePair, oid, srcMultiplicity, dstMultiplicity}; } bool RelGroupCatalogEntry::isParent(table_id_t tableID) { @@ -147,6 +160,13 @@ std::unique_ptr RelGroupCatalogEntry::deserialize( } deserializer.validateDebuggingInfo(debuggingInfo, "relTableInfos"); deserializer.deserializeVector(relTableInfos); + if (deserializer.getStorageVersion() < + ::lbug::storage::StorageVersionInfo::STORAGE_VERSION_42) { + for (auto& relTableInfo : relTableInfos) { + relTableInfo.srcMultiplicity = srcMultiplicity; + relTableInfo.dstMultiplicity = dstMultiplicity; + } + } if (deserializer.getStorageVersion() >= ::lbug::storage::StorageVersionInfo::STORAGE_VERSION_41) { deserializer.validateDebuggingInfo(debuggingInfo, "storageFormat"); @@ -181,6 +201,12 @@ static std::string getFromToStr(const NodeTableIDPair& pair, const Catalog* cata return std::format("FROM `{}` TO `{}`", srcTableName, dstTableName); } +static std::string getMultiplicityStr(RelMultiplicity srcMultiplicity, + RelMultiplicity dstMultiplicity) { + return RelMultiplicityUtils::toString(srcMultiplicity) + "_" + + RelMultiplicityUtils::toString(dstMultiplicity); +} + std::string RelGroupCatalogEntry::toCypher(const ToCypherInfo& info) const { auto relGroupInfo = info.constCast(); auto catalog = Catalog::Get(*relGroupInfo.context); @@ -189,12 +215,24 @@ std::string RelGroupCatalogEntry::toCypher(const ToCypherInfo& info) const { ss << std::format("CREATE REL TABLE `{}` (", getName()); DASSERT(!relTableInfos.empty()); ss << getFromToStr(relTableInfos[0].nodePair, catalog, transaction, storage); + if (relTableInfos[0].srcMultiplicity != srcMultiplicity || + relTableInfos[0].dstMultiplicity != dstMultiplicity) { + ss << " " + << getMultiplicityStr(relTableInfos[0].srcMultiplicity, + relTableInfos[0].dstMultiplicity); + } for (auto i = 1u; i < relTableInfos.size(); ++i) { ss << std::format(", {}", getFromToStr(relTableInfos[i].nodePair, catalog, transaction, storage)); + if (relTableInfos[i].srcMultiplicity != srcMultiplicity || + relTableInfos[i].dstMultiplicity != dstMultiplicity) { + ss << " " + << getMultiplicityStr(relTableInfos[i].srcMultiplicity, + relTableInfos[i].dstMultiplicity); + } } - ss << ", " << propertyCollection.toCypher() << RelMultiplicityUtils::toString(srcMultiplicity) - << "_" << RelMultiplicityUtils::toString(dstMultiplicity) << ");"; + ss << ", " << propertyCollection.toCypher() + << getMultiplicityStr(srcMultiplicity, dstMultiplicity) << ");"; return ss.str(); } @@ -232,13 +270,14 @@ std::unique_ptr RelGroupCatalogEntry::copy() const { std::unique_ptr RelGroupCatalogEntry::getBoundExtraCreateInfo(transaction::Transaction*) const { - std::vector nodePairs; + std::vector boundRelTableInfos; for (auto& relTableInfo : relTableInfos) { - nodePairs.push_back(relTableInfo.nodePair); + boundRelTableInfos.emplace_back(relTableInfo.nodePair, relTableInfo.srcMultiplicity, + relTableInfo.dstMultiplicity); } return std::make_unique( copyVector(propertyCollection.getDefinitions()), srcMultiplicity, dstMultiplicity, - storageDirection, std::move(nodePairs), storage, storageFormat); + storageDirection, std::move(boundRelTableInfos), storage, storageFormat); } } // namespace catalog diff --git a/src/include/binder/ddl/bound_create_table_info.h b/src/include/binder/ddl/bound_create_table_info.h index 94d2f1096a..4cacb98892 100644 --- a/src/include/binder/ddl/bound_create_table_info.h +++ b/src/include/binder/ddl/bound_create_table_info.h @@ -95,11 +95,21 @@ struct BoundExtraCreateNodeTableInfo final : BoundExtraCreateTableInfo { } }; +struct BoundRelTableInfo { + catalog::NodeTableIDPair nodePair; + common::RelMultiplicity srcMultiplicity; + common::RelMultiplicity dstMultiplicity; + + BoundRelTableInfo(catalog::NodeTableIDPair nodePair, common::RelMultiplicity srcMultiplicity, + common::RelMultiplicity dstMultiplicity) + : nodePair{nodePair}, srcMultiplicity{srcMultiplicity}, dstMultiplicity{dstMultiplicity} {} +}; + struct BoundExtraCreateRelTableGroupInfo final : BoundExtraCreateTableInfo { common::RelMultiplicity srcMultiplicity; common::RelMultiplicity dstMultiplicity; common::ExtendDirection storageDirection; - std::vector nodePairs; + std::vector relTableInfos; std::string storage; common::StorageFormat storageFormat = common::StorageFormat::NONE; std::optional scanFunction; @@ -108,14 +118,14 @@ struct BoundExtraCreateRelTableGroupInfo final : BoundExtraCreateTableInfo { explicit BoundExtraCreateRelTableGroupInfo(std::vector definitions, common::RelMultiplicity srcMultiplicity, common::RelMultiplicity dstMultiplicity, - common::ExtendDirection storageDirection, std::vector nodePairs, + common::ExtendDirection storageDirection, std::vector relTableInfos, std::string storage = "", common::StorageFormat storageFormat = common::StorageFormat::NONE, std::optional scanFunction = std::nullopt, std::optional> scanBindData = std::nullopt, std::string foreignDatabaseName = "") : BoundExtraCreateTableInfo{std::move(definitions)}, srcMultiplicity{srcMultiplicity}, dstMultiplicity{dstMultiplicity}, storageDirection{storageDirection}, - nodePairs{std::move(nodePairs)}, storage{std::move(storage)}, + relTableInfos{std::move(relTableInfos)}, storage{std::move(storage)}, storageFormat{storageFormat}, scanFunction{std::move(scanFunction)}, scanBindData{std::move(scanBindData)}, foreignDatabaseName{std::move(foreignDatabaseName)} {} @@ -123,7 +133,7 @@ struct BoundExtraCreateRelTableGroupInfo final : BoundExtraCreateTableInfo { BoundExtraCreateRelTableGroupInfo(const BoundExtraCreateRelTableGroupInfo& other) : BoundExtraCreateTableInfo{copyVector(other.propertyDefinitions)}, srcMultiplicity{other.srcMultiplicity}, dstMultiplicity{other.dstMultiplicity}, - storageDirection{other.storageDirection}, nodePairs{other.nodePairs}, + storageDirection{other.storageDirection}, relTableInfos{other.relTableInfos}, storage{other.storage}, storageFormat{other.storageFormat}, scanFunction{other.scanFunction}, scanBindData{other.scanBindData}, foreignDatabaseName{other.foreignDatabaseName} {} diff --git a/src/include/catalog/catalog_entry/rel_group_catalog_entry.h b/src/include/catalog/catalog_entry/rel_group_catalog_entry.h index c2a0e4ec92..cdaf6cd00c 100644 --- a/src/include/catalog/catalog_entry/rel_group_catalog_entry.h +++ b/src/include/catalog/catalog_entry/rel_group_catalog_entry.h @@ -23,10 +23,19 @@ struct RelGroupToCypherInfo final : ToCypherInfo { struct RelTableCatalogInfo { NodeTableIDPair nodePair; common::oid_t oid = common::INVALID_OID; + common::RelMultiplicity srcMultiplicity = common::RelMultiplicity::MANY; + common::RelMultiplicity dstMultiplicity = common::RelMultiplicity::MANY; RelTableCatalogInfo() = default; - RelTableCatalogInfo(NodeTableIDPair nodePair, common::oid_t oid) - : nodePair{nodePair}, oid{oid} {} + RelTableCatalogInfo(NodeTableIDPair nodePair, common::oid_t oid, + common::RelMultiplicity srcMultiplicity = common::RelMultiplicity::MANY, + common::RelMultiplicity dstMultiplicity = common::RelMultiplicity::MANY) + : nodePair{nodePair}, oid{oid}, srcMultiplicity{srcMultiplicity}, + dstMultiplicity{dstMultiplicity} {} + + common::RelMultiplicity getMultiplicity(common::RelDataDirection direction) const { + return direction == common::RelDataDirection::FWD ? dstMultiplicity : srcMultiplicity; + } void serialize(common::Serializer& ser) const; static RelTableCatalogInfo deserialize(common::Deserializer& deser); @@ -60,9 +69,19 @@ class LBUG_API RelGroupCatalogEntry final : public TableCatalogEntry { common::RelMultiplicity getMultiplicity(common::RelDataDirection direction) const { return direction == common::RelDataDirection::FWD ? dstMultiplicity : srcMultiplicity; } + common::RelMultiplicity getMultiplicity(common::table_id_t srcTableID, + common::table_id_t dstTableID, common::RelDataDirection direction) const { + const auto relEntryInfo = getRelEntryInfo(srcTableID, dstTableID); + DASSERT(relEntryInfo); + return relEntryInfo->getMultiplicity(direction); + } bool isSingleMultiplicity(common::RelDataDirection direction) const { return getMultiplicity(direction) == common::RelMultiplicity::ONE; } + bool isSingleMultiplicity(common::table_id_t srcTableID, common::table_id_t dstTableID, + common::RelDataDirection direction) const { + return getMultiplicity(srcTableID, dstTableID, direction) == common::RelMultiplicity::ONE; + } common::ExtendDirection getStorageDirection() const { return storageDirection; } const std::string& getStorage() const { return storage; } diff --git a/src/include/parser/ddl/create_table_info.h b/src/include/parser/ddl/create_table_info.h index b3d42ca3ad..ccc70e6654 100644 --- a/src/include/parser/ddl/create_table_info.h +++ b/src/include/parser/ddl/create_table_info.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include @@ -42,15 +43,26 @@ struct ExtraCreateNodeTableInfo final : ExtraCreateTableInfo { : pKName{std::move(pKName)}, options{std::move(options)} {} }; +struct ParsedRelConnection { + std::string srcTableName; + std::string dstTableName; + std::optional relMultiplicity; + + ParsedRelConnection(std::string srcTableName, std::string dstTableName, + std::optional relMultiplicity) + : srcTableName{std::move(srcTableName)}, dstTableName{std::move(dstTableName)}, + relMultiplicity{std::move(relMultiplicity)} {} +}; + struct ExtraCreateRelTableGroupInfo final : ExtraCreateTableInfo { std::string relMultiplicity; - std::vector> srcDstTablePairs; + std::vector connections; options_t options; ExtraCreateRelTableGroupInfo(std::string relMultiplicity, - std::vector> srcDstTablePairs, options_t options) - : relMultiplicity{std::move(relMultiplicity)}, - srcDstTablePairs{std::move(srcDstTablePairs)}, options{std::move(options)} {} + std::vector connections, options_t options) + : relMultiplicity{std::move(relMultiplicity)}, connections{std::move(connections)}, + options{std::move(options)} {} }; } // namespace parser diff --git a/src/include/storage/storage_version_info.h b/src/include/storage/storage_version_info.h index 577c87f82b..d0a299e233 100644 --- a/src/include/storage/storage_version_info.h +++ b/src/include/storage/storage_version_info.h @@ -17,6 +17,8 @@ struct StorageVersionInfo { static constexpr storage_version_t STORAGE_VERSION_40 = 40; // Storage version 41 adds the table storage FORMAT field to catalog entries (enum encoding). static constexpr storage_version_t STORAGE_VERSION_41 = 41; + // Storage version 42 adds per-FROM/TO relationship multiplicity to rel table catalog info. + static constexpr storage_version_t STORAGE_VERSION_42 = 42; static std::unordered_map getStorageVersionInfo() { return {{"0.12.0", STORAGE_VERSION_40}, {"0.12.2", STORAGE_VERSION_40}, @@ -25,12 +27,13 @@ struct StorageVersionInfo { {"0.15.0", STORAGE_VERSION_40}, {"0.15.1", STORAGE_VERSION_40}, {"0.15.2", STORAGE_VERSION_40}, {"0.15.3", STORAGE_VERSION_40}, {"0.15.4", STORAGE_VERSION_40}, {"0.16.0", STORAGE_VERSION_40}, - {"0.16.1", STORAGE_VERSION_40}, {"0.17.0", STORAGE_VERSION_41}}; + {"0.16.1", STORAGE_VERSION_40}, {"0.17.0", STORAGE_VERSION_42}}; } static LBUG_API storage_version_t getStorageVersion(); static bool canReadStorageVersion(storage_version_t storageVersion) { - return storageVersion == STORAGE_VERSION_40 || storageVersion == getStorageVersion(); + return storageVersion == STORAGE_VERSION_40 || storageVersion == STORAGE_VERSION_41 || + storageVersion == getStorageVersion(); } static constexpr const char* MAGIC_BYTES = "LBUG"; diff --git a/src/include/storage/table/rel_table_data.h b/src/include/storage/table/rel_table_data.h index 47010372f9..c5eb0f8020 100644 --- a/src/include/storage/table/rel_table_data.h +++ b/src/include/storage/table/rel_table_data.h @@ -11,7 +11,8 @@ namespace lbug { namespace catalog { class RelGroupCatalogEntry; -} +struct RelTableCatalogInfo; +} // namespace catalog namespace transaction { class Transaction; } @@ -56,7 +57,8 @@ class InMemoryVersionRecordHandler final : public VersionRecordHandler { class RelTableData { public: RelTableData(FileHandle* dataFH, MemoryManager* mm, ShadowFile* shadowFile, - const catalog::RelGroupCatalogEntry& relGroupEntry, Table& table, + const catalog::RelGroupCatalogEntry& relGroupEntry, + const catalog::RelTableCatalogInfo& relTableInfo, Table& table, common::RelDataDirection direction, common::table_id_t nbrTableID, bool enableCompression); bool update(transaction::Transaction* transaction, common::ValueVector& boundNodeIDVector, diff --git a/src/main/database_manager.cpp b/src/main/database_manager.cpp index ed107fea31..d5825ac6a4 100644 --- a/src/main/database_manager.cpp +++ b/src/main/database_manager.cpp @@ -180,13 +180,14 @@ void DatabaseManager::createGraph(const std::string& graphName, binder::ColumnDefinition("label", common::LogicalType::STRING())); relProperties.emplace_back(binder::ColumnDefinition("data", LogicalType::JSON())); - std::vector nodePairs; - nodePairs.emplace_back(catalog::NodeTableIDPair(nodeTableID, nodeTableID)); + std::vector relTableInfos; + relTableInfos.emplace_back(catalog::NodeTableIDPair(nodeTableID, nodeTableID), + common::RelMultiplicity::MANY, common::RelMultiplicity::MANY); auto relExtraInfo = std::unique_ptr( new binder::BoundExtraCreateRelTableGroupInfo(std::move(relProperties), common::RelMultiplicity::MANY, common::RelMultiplicity::MANY, - common::ExtendDirection::BOTH, std::move(nodePairs), std::string(""))); + common::ExtendDirection::BOTH, std::move(relTableInfos), std::string(""))); auto relTableInfo = binder::BoundCreateTableInfo(catalog::CatalogEntryType::REL_GROUP_ENTRY, "_edges", common::ConflictAction::ON_CONFLICT_THROW, std::move(relExtraInfo), false); auto* relEntry = catalog->createTableEntry(dummyTransaction, relTableInfo); diff --git a/src/parser/transform/transform_ddl.cpp b/src/parser/transform/transform_ddl.cpp index 3b594eece2..7ef48d15c7 100644 --- a/src/parser/transform/transform_ddl.cpp +++ b/src/parser/transform/transform_ddl.cpp @@ -103,14 +103,19 @@ std::unique_ptr Transformer::transformCreateRelGroup( if (ctx.iC_Options()) { options = transformOptions(*ctx.iC_Options()); } - std::vector> fromToPairs; - for (auto& fromTo : ctx.iC_FromToConnections()->iC_FromToConnection()) { + std::vector connections; + for (auto& fromTo : ctx.iC_CreateFromToConnections()->iC_CreateFromToConnection()) { auto src = transformSchemaName(*fromTo->oC_SchemaName(0)); auto dst = transformSchemaName(*fromTo->oC_SchemaName(1)); - fromToPairs.emplace_back(src, dst); + std::optional perConnectionMultiplicity; + if (fromTo->oC_SymbolicName()) { + perConnectionMultiplicity = transformSymbolicName(*fromTo->oC_SymbolicName()); + } + connections.emplace_back(std::move(src), std::move(dst), + std::move(perConnectionMultiplicity)); } std::unique_ptr extraInfo = - std::make_unique(relMultiplicity, std::move(fromToPairs), + std::make_unique(relMultiplicity, std::move(connections), std::move(options)); auto conflictAction = transformConflictAction(ctx.iC_IfNotExists()); auto createTableInfo = CreateTableInfo(common::TableType::REL, tableName, conflictAction); diff --git a/src/processor/operator/persistent/rel_batch_insert.cpp b/src/processor/operator/persistent/rel_batch_insert.cpp index 5dfb414377..1da7c3088e 100644 --- a/src/processor/operator/persistent/rel_batch_insert.cpp +++ b/src/processor/operator/persistent/rel_batch_insert.cpp @@ -224,7 +224,8 @@ void RelBatchInsert::populateCSRHeader(const RelGroupCatalogEntry& relGroupEntry void RelBatchInsert::checkRelMultiplicityConstraint(const RelGroupCatalogEntry& relGroupEntry, const InMemChunkedCSRHeader& csrHeader, offset_t startNodeOffset, const RelBatchInsertInfo& relInfo) { - if (!relGroupEntry.isSingleMultiplicity(relInfo.direction)) { + if (!relGroupEntry.isSingleMultiplicity(relInfo.fromTableID, relInfo.toTableID, + relInfo.direction)) { return; } for (auto i = 0u; i < csrHeader.length->getNumValues(); i++) { diff --git a/src/storage/table/rel_table.cpp b/src/storage/table/rel_table.cpp index 68b976581c..afcba08632 100644 --- a/src/storage/table/rel_table.cpp +++ b/src/storage/table/rel_table.cpp @@ -165,7 +165,7 @@ RelTable::RelTable(RelGroupCatalogEntry* relGroupEntry, table_id_t fromTableID, auto nbrTableID = RelDirectionUtils::getNbrTableID(direction, fromTableID, toTableID); directedRelData.emplace_back( std::make_unique(storageManager->getDataFH(), memoryManager, shadowFile, - *relGroupEntry, *this, direction, nbrTableID, enableCompression)); + *relGroupEntry, *relEntryInfo, *this, direction, nbrTableID, enableCompression)); } } diff --git a/src/storage/table/rel_table_data.cpp b/src/storage/table/rel_table_data.cpp index fc3acd48d7..99d0bb7ff0 100644 --- a/src/storage/table/rel_table_data.cpp +++ b/src/storage/table/rel_table_data.cpp @@ -57,10 +57,10 @@ void InMemoryVersionRecordHandler::rollbackInsert(main::ClientContext* context, } RelTableData::RelTableData(FileHandle* dataFH, MemoryManager* mm, ShadowFile* shadowFile, - const RelGroupCatalogEntry& relGroupEntry, Table& table, RelDataDirection direction, - table_id_t nbrTableID, bool enableCompression) + const RelGroupCatalogEntry& relGroupEntry, const RelTableCatalogInfo& relTableInfo, + Table& table, RelDataDirection direction, table_id_t nbrTableID, bool enableCompression) : table{table}, mm{mm}, shadowFile{shadowFile}, enableCompression{enableCompression}, - direction{direction}, multiplicity{relGroupEntry.getMultiplicity(direction)}, + direction{direction}, multiplicity{relTableInfo.getMultiplicity(direction)}, persistentVersionRecordHandler(this), inMemoryVersionRecordHandler(this) { initCSRHeaderColumns(dataFH); initPropertyColumns(relGroupEntry, nbrTableID, dataFH); diff --git a/test/test_files/dml_rel/create/create_small.test b/test/test_files/dml_rel/create/create_small.test index 366f36ac93..5023fc91bc 100644 --- a/test/test_files/dml_rel/create/create_small.test +++ b/test/test_files/dml_rel/create/create_small.test @@ -85,6 +85,34 @@ Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table Live ---- error Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table LivesIn in the fwd direction, which violates the rel multiplicity constraint. +-CASE CreateRelGroupPerPairMultiplicity +-STATEMENT CREATE NODE TABLE User(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE Shop(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE Event(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE City(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE REL TABLE Located(FROM User TO City MANY_ONE, FROM Shop TO City, FROM Event TO City ONE_ONE, MANY_MANY); +---- ok +-STATEMENT CREATE (:User {id: 'u1'}), (:User {id: 'u2'}), (:Shop {id: 's1'}), (:Event {id: 'e1'}), (:Event {id: 'e2'}), (:City {id: 'c1'}), (:City {id: 'c2'}); +---- ok +-STATEMENT MATCH (u:User), (c:City) WHERE u.id = 'u1' AND c.id = 'c1' CREATE (u)-[:Located]->(c); +---- ok +-STATEMENT MATCH (u:User), (c:City) WHERE u.id = 'u2' AND c.id = 'c1' CREATE (u)-[:Located]->(c); +---- ok +-STATEMENT MATCH (s:Shop), (c:City) WHERE s.id = 's1' CREATE (s)-[:Located]->(c); +---- ok +-STATEMENT MATCH (e:Event), (c:City) WHERE e.id = 'e1' AND c.id = 'c1' CREATE (e)-[:Located]->(c); +---- ok +-STATEMENT MATCH (u:User), (c:City) WHERE u.id = 'u1' AND c.id = 'c2' CREATE (u)-[:Located]->(c); +---- error +Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table Located in the fwd direction, which violates the rel multiplicity constraint. +-STATEMENT MATCH (e:Event), (c:City) WHERE e.id = 'e2' AND c.id = 'c1' CREATE (e)-[:Located]->(c); +---- error +Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table Located in the bwd direction, which violates the rel multiplicity constraint. + -CASE CreateOneToOneRelTableAfterCreateNodes -TEST_FWD_ONLY_REL -STATEMENT CREATE NODE TABLE N1(ID SERIAL, PRIMARY KEY (ID)); diff --git a/test/test_files/rel_group/edge_cases.test b/test/test_files/rel_group/edge_cases.test index df356e341a..65d66aed42 100644 --- a/test/test_files/rel_group/edge_cases.test +++ b/test/test_files/rel_group/edge_cases.test @@ -58,3 +58,57 @@ Binder exception: Table Know2 already exists. -STATEMENT CREATE REL TABLE Knows (FROM PersonA TO PersonA, From PersonA TO PersonA); ---- error Binder exception: Found duplicate FROM-TO PersonA-PersonA pairs. + +-CASE PerPairMultiplicityInvalidKeyword +-STATEMENT CREATE NODE TABLE PersonA (id INT64 PRIMARY KEY); +---- ok +-STATEMENT CREATE NODE TABLE PersonB (id INT64 PRIMARY KEY); +---- ok +-STATEMENT CREATE REL TABLE Knows (FROM PersonA TO PersonB NOT_A_MULTIPLICITY); +---- error +Binder exception: Cannot bind NOT_A_MULTIPLICITY as relationship multiplicity. + +-CASE PerPairMultiplicityDefaultAndOverrides +-STATEMENT CREATE NODE TABLE User(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE Shop(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE Event(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE City(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE REL TABLE Located(FROM User TO City MANY_ONE, FROM Shop TO City, FROM Event TO City ONE_ONE, MANY_MANY); +---- ok +-STATEMENT CREATE (:User {id: 'u1'}), (:User {id: 'u2'}), (:Shop {id: 's1'}), (:Event {id: 'e1'}), (:Event {id: 'e2'}), (:City {id: 'c1'}), (:City {id: 'c2'}); +---- ok +-STATEMENT MATCH (u:User), (c:City) WHERE u.id = 'u1' AND c.id = 'c1' CREATE (u)-[:Located]->(c); +---- ok +-STATEMENT MATCH (u:User), (c:City) WHERE u.id = 'u2' AND c.id = 'c1' CREATE (u)-[:Located]->(c); +---- ok +-STATEMENT MATCH (s:Shop), (c:City) WHERE s.id = 's1' CREATE (s)-[:Located]->(c); +---- ok +-STATEMENT MATCH (s:Shop)-[:Located]->(c:City) RETURN s.id, c.id ORDER BY c.id; +---- 2 +s1|c1 +s1|c2 +-STATEMENT MATCH (e:Event), (c:City) WHERE e.id = 'e1' AND c.id = 'c1' CREATE (e)-[:Located]->(c); +---- ok +-STATEMENT MATCH (u:User), (c:City) WHERE u.id = 'u1' AND c.id = 'c2' CREATE (u)-[:Located]->(c); +---- error +Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table Located in the fwd direction, which violates the rel multiplicity constraint. +-STATEMENT MATCH (e:Event), (c:City) WHERE e.id = 'e2' AND c.id = 'c1' CREATE (e)-[:Located]->(c); +---- error +Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table Located in the bwd direction, which violates the rel multiplicity constraint. + +-CASE PerPairMultiplicityCopyFromSubquery +-STATEMENT CREATE NODE TABLE User(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE NODE TABLE City(id STRING, PRIMARY KEY (id)); +---- ok +-STATEMENT CREATE REL TABLE Located(FROM User TO City MANY_ONE); +---- ok +-STATEMENT CREATE (:User {id: 'u1'}), (:City {id: 'c1'}), (:City {id: 'c2'}); +---- ok +-STATEMENT COPY Located FROM (MATCH (u:User), (c:City) RETURN u.id, c.id); +---- error +Copy exception: Node(nodeOffset: 0) has more than one neighbour in table Located in the fwd direction, which violates the rel multiplicity constraint. diff --git a/test/test_files/storage_version.test b/test/test_files/storage_version.test index bcd96a9487..6627cf44d9 100644 --- a/test/test_files/storage_version.test +++ b/test/test_files/storage_version.test @@ -5,8 +5,8 @@ -CASE StorageVersionFunctionAndUpgrade -STATEMENT CALL storage_version() RETURN *; ---- 1 -41 --CHECK_STORAGE_VERSION 41 +42 +-CHECK_STORAGE_VERSION 42 -SET_STORAGE_VERSION 40 -STATEMENT CALL storage_version() RETURN *; ---- 1 @@ -17,11 +17,11 @@ ---- ok -STATEMENT CHECKPOINT; ---- ok --CHECK_STORAGE_VERSION 41 +-CHECK_STORAGE_VERSION 42 -RELOADDB -STATEMENT CALL storage_version() RETURN *; ---- 1 -41 +42 -STATEMENT MATCH (u:users) RETURN u.id, u.name; ---- 1 1|Alice diff --git a/third_party/antlr4_cypher/cypher_parser.cpp b/third_party/antlr4_cypher/cypher_parser.cpp index d1a41f0039..b5fda90051 100644 --- a/third_party/antlr4_cypher/cypher_parser.cpp +++ b/third_party/antlr4_cypher/cypher_parser.cpp @@ -58,11 +58,12 @@ void cypherParserInitialize() { "iC_StandaloneCall", "iC_CommentOn", "iC_CreateMacro", "iC_PositionalArgs", "iC_DefaultArg", "iC_FilePaths", "iC_IfNotExists", "iC_CreateNodeTable", "iC_CreateRelTable", "iC_CreateIndex", "iC_IndexPattern", "iC_IndexNodePattern", - "iC_IndexRelationshipPattern", "iC_IndexPropertyPattern", "iC_FromToConnections", - "iC_FromToConnection", "iC_CreateSequence", "iC_CreateType", "iC_SequenceOptions", - "iC_WithPasswd", "iC_CreateUser", "iC_CreateRole", "iC_IncrementBy", - "iC_MinValue", "iC_MaxValue", "iC_StartWith", "iC_Cycle", "iC_IfExists", - "iC_Drop", "iC_AlterTable", "iC_AlterOptions", "iC_AddProperty", "iC_Default", + "iC_IndexRelationshipPattern", "iC_IndexPropertyPattern", "iC_CreateFromToConnections", + "iC_CreateFromToConnection", "iC_FromToConnections", "iC_FromToConnection", + "iC_CreateSequence", "iC_CreateType", "iC_SequenceOptions", "iC_WithPasswd", + "iC_CreateUser", "iC_CreateRole", "iC_IncrementBy", "iC_MinValue", + "iC_MaxValue", "iC_StartWith", "iC_Cycle", "iC_IfExists", "iC_Drop", + "iC_AlterTable", "iC_AlterOptions", "iC_AddProperty", "iC_Default", "iC_DropProperty", "iC_RenameTable", "iC_RenameProperty", "iC_AddFromToConnection", "iC_DropFromToConnection", "iC_ColumnDefinitions", "iC_ColumnDefinition", "iC_PropertyDefinitions", "iC_PropertyDefinition", "iC_CreateNodeConstraint", @@ -147,7 +148,7 @@ void cypherParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,189,3065,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,189,3094,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, @@ -175,1207 +176,1218 @@ void cypherParserInitialize() { 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170, 7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176, 7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182, - 7,182,2,183,7,183,2,184,7,184,2,185,7,185,1,0,1,0,3,0,375,8,0,1,0,1,0, - 3,0,379,8,0,1,0,5,0,382,8,0,10,0,12,0,385,9,0,1,0,3,0,388,8,0,1,0,1,0, - 1,1,3,1,393,8,1,1,1,3,1,396,8,1,1,1,1,1,3,1,400,8,1,1,1,3,1,403,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,1,2,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,430,8,2,1,3,1,3,1,3,1,3,3,3,436,8,3,1, - 3,1,3,1,3,1,3,1,3,3,3,443,8,3,1,3,1,3,3,3,447,8,3,1,3,1,3,3,3,451,8,3, - 1,3,1,3,3,3,455,8,3,1,4,3,4,458,8,4,1,4,1,4,3,4,462,8,4,1,4,1,4,3,4,466, - 8,4,1,4,1,4,3,4,470,8,4,1,4,5,4,473,8,4,10,4,12,4,476,9,4,1,4,3,4,479, - 8,4,3,4,481,8,4,1,4,1,4,1,5,1,5,1,5,3,5,488,8,5,1,5,1,5,3,5,492,8,5,1, - 5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,501,8,5,1,5,1,5,1,5,3,5,506,8,5,1,6,1,6, - 1,6,1,6,1,6,1,6,1,6,1,6,3,6,516,8,6,1,6,1,6,3,6,520,8,6,1,6,1,6,3,6,524, - 8,6,1,6,5,6,527,8,6,10,6,12,6,530,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7, - 1,7,1,7,3,7,542,8,7,1,7,1,7,3,7,546,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,554, - 8,7,1,7,1,7,3,7,558,8,7,1,7,1,7,3,7,562,8,7,1,7,1,7,3,7,566,8,7,1,8,1, - 8,1,8,1,8,1,8,1,8,3,8,574,8,8,1,8,1,8,3,8,578,8,8,1,8,1,8,3,8,582,8,8, - 1,8,1,8,3,8,586,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,3,10,601,8,10,1,10,1,10,1,10,3,10,606,8,10,1,10,1,10,1,10,1, - 10,3,10,612,8,10,1,10,1,10,3,10,616,8,10,1,10,3,10,619,8,10,1,10,3,10, - 622,8,10,1,10,1,10,1,11,1,11,3,11,628,8,11,1,11,1,11,3,11,632,8,11,1, - 11,5,11,635,8,11,10,11,12,11,638,9,11,3,11,640,8,11,1,11,1,11,1,11,3, - 11,645,8,11,1,12,1,12,3,12,649,8,12,1,12,1,12,3,12,653,8,12,1,12,5,12, - 656,8,12,10,12,12,12,659,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14, - 1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,676,8,15,1,16,1,16,1,16,1,16, - 1,16,1,16,1,17,1,17,1,17,1,17,3,17,688,8,17,1,17,1,17,3,17,692,8,17,1, - 17,1,17,1,17,1,17,1,17,3,17,699,8,17,1,18,1,18,1,18,1,18,1,18,1,18,1, - 18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19,719,8, - 19,1,19,1,19,3,19,723,8,19,1,19,3,19,726,8,19,1,19,3,19,729,8,19,1,19, - 3,19,732,8,19,1,19,3,19,735,8,19,1,19,1,19,3,19,739,8,19,1,19,5,19,742, - 8,19,10,19,12,19,745,9,19,1,19,3,19,748,8,19,1,19,1,19,1,19,1,19,1,19, - 1,19,1,20,1,20,3,20,758,8,20,1,20,1,20,3,20,762,8,20,1,20,5,20,765,8, - 20,10,20,12,20,768,9,20,1,21,1,21,3,21,772,8,21,1,21,1,21,1,21,3,21,777, - 8,21,1,21,1,21,1,22,1,22,3,22,783,8,22,1,22,1,22,3,22,787,8,22,1,22,1, - 22,3,22,791,8,22,1,22,5,22,794,8,22,10,22,12,22,797,9,22,1,22,1,22,1, - 22,1,22,3,22,803,8,22,1,22,1,22,3,22,807,8,22,1,22,1,22,3,22,811,8,22, - 1,22,3,22,814,8,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,24,3,24,831,8,24,1,24,1,24,3,24,835,8,24,1,24,1, - 24,3,24,839,8,24,1,24,1,24,3,24,843,8,24,1,24,1,24,3,24,847,8,24,1,24, - 3,24,850,8,24,1,24,3,24,853,8,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,861, - 8,24,1,24,1,24,1,24,3,24,866,8,24,1,24,1,24,3,24,870,8,24,1,24,1,24,3, - 24,874,8,24,1,24,1,24,3,24,878,8,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25, - 3,25,887,8,25,1,25,1,25,3,25,891,8,25,1,25,1,25,1,25,3,25,896,8,25,1, - 25,1,25,3,25,900,8,25,1,25,1,25,3,25,904,8,25,1,25,1,25,3,25,908,8,25, - 1,25,1,25,3,25,912,8,25,3,25,914,8,25,1,25,1,25,3,25,918,8,25,1,25,1, - 25,3,25,922,8,25,3,25,924,8,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,932, - 8,25,1,25,1,25,1,25,3,25,937,8,25,1,25,1,25,3,25,941,8,25,1,25,1,25,3, - 25,945,8,25,1,25,1,25,3,25,949,8,25,1,26,1,26,1,26,3,26,954,8,26,1,26, - 1,26,1,26,1,26,3,26,960,8,26,1,26,1,26,3,26,964,8,26,1,26,1,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,977,8,26,1,26,1,26,3,26,981, - 8,26,1,26,3,26,984,8,26,1,26,3,26,987,8,26,1,26,3,26,990,8,26,1,27,1, - 27,3,27,994,8,27,1,28,1,28,3,28,998,8,28,1,28,3,28,1001,8,28,1,28,3,28, - 1004,8,28,1,28,1,28,3,28,1008,8,28,1,28,1,28,3,28,1012,8,28,1,28,1,28, - 1,29,1,29,3,29,1018,8,29,1,29,1,29,3,29,1022,8,29,1,29,1,29,3,29,1026, - 8,29,1,29,1,29,3,29,1030,8,29,1,29,1,29,1,30,1,30,3,30,1036,8,30,1,30, - 1,30,3,30,1040,8,30,1,30,1,30,3,30,1044,8,30,1,30,1,30,3,30,1048,8,30, - 1,30,1,30,1,31,1,31,3,31,1054,8,31,1,31,1,31,3,31,1058,8,31,1,31,5,31, - 1061,8,31,10,31,12,31,1064,9,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, - 32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,1081,8,33,1,33,1,33,1,33,5, - 33,1086,8,33,10,33,12,33,1089,9,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34, - 1,34,1,34,1,34,3,34,1101,8,34,1,35,1,35,1,35,1,35,1,35,3,35,1108,8,35, - 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37, - 3,37,1124,8,37,1,37,1,37,3,37,1128,8,37,1,38,1,38,1,38,1,38,1,38,1,38, - 1,38,3,38,1137,8,38,1,38,1,38,1,39,1,39,1,39,1,39,3,39,1145,8,39,1,39, - 3,39,1148,8,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1158,8,40, - 1,40,3,40,1161,8,40,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1169,8,41,1,41, - 3,41,1172,8,41,1,42,1,42,1,42,1,42,3,42,1178,8,42,1,42,3,42,1181,8,42, - 1,42,1,42,1,43,1,43,3,43,1187,8,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45, - 1,45,1,45,1,45,1,45,1,45,1,45,3,45,1202,8,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,3,47,1220,8,47, - 1,48,1,48,1,48,1,48,1,48,3,48,1227,8,48,1,48,1,48,1,48,1,48,1,48,3,48, - 1234,8,48,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,3,50,1245,8,50, - 1,50,1,50,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,52,1,53,1,53,1,53,1,53,1,53,3,53,1268,8,53,1,53,1,53,1,54,1,54, - 1,54,1,54,1,54,3,54,1277,8,54,1,54,1,54,1,55,1,55,3,55,1283,8,55,1,55, - 1,55,3,55,1287,8,55,1,55,5,55,1290,8,55,10,55,12,55,1293,9,55,1,56,1, - 56,1,56,1,56,1,57,1,57,3,57,1301,8,57,1,57,1,57,3,57,1305,8,57,1,57,5, - 57,1308,8,57,10,57,12,57,1311,9,57,1,58,1,58,1,58,3,58,1316,8,58,1,58, - 1,58,1,58,1,58,3,58,1322,8,58,1,59,1,59,1,59,1,59,3,59,1328,8,59,1,59, - 1,59,3,59,1332,8,59,1,59,1,59,3,59,1336,8,59,1,59,1,59,1,60,1,60,3,60, - 1342,8,60,1,60,1,60,3,60,1346,8,60,1,60,1,60,3,60,1350,8,60,1,60,1,60, - 1,61,1,61,3,61,1356,8,61,1,61,1,61,3,61,1360,8,61,1,61,1,61,3,61,1364, - 8,61,1,61,1,61,1,62,1,62,3,62,1370,8,62,1,62,1,62,3,62,1374,8,62,1,62, - 1,62,3,62,1378,8,62,1,62,1,62,3,62,1382,8,62,1,62,1,62,3,62,1386,8,62, - 1,62,1,62,1,63,1,63,3,63,1392,8,63,1,63,1,63,3,63,1396,8,63,1,63,1,63, - 3,63,1400,8,63,1,63,1,63,3,63,1404,8,63,1,63,1,63,3,63,1408,8,63,1,63, - 1,63,1,64,1,64,1,64,1,64,1,64,1,64,3,64,1418,8,64,1,64,1,64,5,64,1422, - 8,64,10,64,12,64,1425,9,64,1,65,1,65,5,65,1429,8,65,10,65,12,65,1432, - 9,65,1,66,1,66,3,66,1436,8,66,1,66,1,66,1,67,1,67,3,67,1442,8,67,1,68, - 1,68,1,68,3,68,1447,8,68,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,70,3,70,1464,8,70,1,71,1,71,1,71,1,71,3,71, - 1470,8,71,1,72,1,72,1,72,1,72,3,72,1476,8,72,1,72,1,72,3,72,1480,8,72, - 1,73,1,73,3,73,1484,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,1493, - 8,73,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,77,1,77,3,77, - 1507,8,77,1,77,5,77,1510,8,77,10,77,12,77,1513,9,77,1,77,1,77,3,77,1517, - 8,77,4,77,1519,8,77,11,77,12,77,1520,1,77,1,77,1,77,3,77,1526,8,77,1, - 78,1,78,1,78,1,78,3,78,1532,8,78,1,78,1,78,1,78,3,78,1537,8,78,1,78,3, - 78,1540,8,78,1,79,1,79,3,79,1544,8,79,1,80,1,80,3,80,1548,8,80,5,80,1550, - 8,80,10,80,12,80,1553,9,80,1,80,1,80,1,80,3,80,1558,8,80,5,80,1560,8, - 80,10,80,12,80,1563,9,80,1,80,1,80,3,80,1567,8,80,1,80,5,80,1570,8,80, - 10,80,12,80,1573,9,80,1,80,3,80,1576,8,80,1,80,3,80,1579,8,80,3,80,1581, - 8,80,1,81,1,81,3,81,1585,8,81,4,81,1587,8,81,11,81,12,81,1588,1,81,1, - 81,1,82,1,82,3,82,1595,8,82,5,82,1597,8,82,10,82,12,82,1600,9,82,1,82, - 1,82,3,82,1604,8,82,5,82,1606,8,82,10,82,12,82,1609,9,82,1,82,1,82,1, - 83,1,83,1,83,1,83,3,83,1617,8,83,1,84,1,84,1,84,1,84,3,84,1623,8,84,1, - 85,1,85,1,85,1,85,1,85,1,85,3,85,1631,8,85,1,85,1,85,3,85,1635,8,85,1, - 85,1,85,3,85,1639,8,85,1,85,1,85,3,85,1643,8,85,1,85,1,85,1,85,1,85,1, - 85,3,85,1650,8,85,1,85,1,85,3,85,1654,8,85,1,85,1,85,3,85,1658,8,85,1, - 85,1,85,3,85,1662,8,85,1,85,3,85,1665,8,85,1,85,3,85,1668,8,85,1,86,1, - 86,1,86,1,86,1,86,3,86,1675,8,86,1,86,1,86,1,87,1,87,3,87,1681,8,87,1, - 87,1,87,3,87,1685,8,87,1,87,5,87,1688,8,87,10,87,12,87,1691,9,87,1,88, - 1,88,1,88,1,88,3,88,1697,8,88,1,88,3,88,1700,8,88,1,88,3,88,1703,8,88, - 1,88,1,88,1,88,3,88,1708,8,88,1,89,1,89,3,89,1712,8,89,1,89,1,89,3,89, - 1716,8,89,1,89,1,89,1,89,3,89,1721,8,89,1,89,1,89,3,89,1725,8,89,1,90, - 1,90,1,90,1,90,1,91,1,91,1,91,3,91,1734,8,91,1,91,1,91,3,91,1738,8,91, - 1,91,1,91,1,91,3,91,1743,8,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91, - 1,91,1,91,4,91,1755,8,91,11,91,12,91,1756,5,91,1759,8,91,10,91,12,91, - 1762,9,91,1,92,1,92,3,92,1766,8,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93, - 1,93,3,93,1776,8,93,1,93,1,93,1,94,1,94,3,94,1782,8,94,1,94,1,94,1,94, - 5,94,1787,8,94,10,94,12,94,1790,9,94,1,95,1,95,1,95,1,95,1,95,1,95,1, - 95,1,95,1,95,1,95,3,95,1802,8,95,1,96,1,96,3,96,1806,8,96,1,96,1,96,3, - 96,1810,8,96,1,96,1,96,3,96,1814,8,96,1,96,5,96,1817,8,96,10,96,12,96, - 1820,9,96,1,96,1,96,3,96,1824,8,96,1,96,1,96,3,96,1828,8,96,1,96,1,96, - 3,96,1832,8,96,1,96,1,96,3,96,1836,8,96,1,97,1,97,3,97,1840,8,97,1,97, - 1,97,3,97,1844,8,97,1,97,1,97,1,98,1,98,3,98,1850,8,98,1,98,1,98,3,98, - 1854,8,98,1,98,1,98,3,98,1858,8,98,1,98,1,98,3,98,1862,8,98,1,98,5,98, - 1865,8,98,10,98,12,98,1868,9,98,1,99,1,99,1,99,3,99,1873,8,99,1,99,3, - 99,1876,8,99,1,100,1,100,1,100,1,101,3,101,1882,8,101,1,101,3,101,1885, - 8,101,1,101,1,101,1,101,1,101,3,101,1891,8,101,1,101,1,101,3,101,1895, - 8,101,1,101,1,101,3,101,1899,8,101,1,102,1,102,3,102,1903,8,102,1,102, - 1,102,3,102,1907,8,102,1,102,5,102,1910,8,102,10,102,12,102,1913,9,102, - 1,102,1,102,3,102,1917,8,102,1,102,1,102,3,102,1921,8,102,1,102,5,102, - 1924,8,102,10,102,12,102,1927,9,102,3,102,1929,8,102,1,103,1,103,1,103, - 1,103,1,103,1,103,1,103,3,103,1938,8,103,1,104,1,104,1,104,1,104,1,104, - 1,104,1,104,3,104,1947,8,104,1,104,5,104,1950,8,104,10,104,12,104,1953, - 9,104,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,3,107, - 1965,8,107,1,107,3,107,1968,8,107,1,108,1,108,1,108,1,108,1,109,1,109, - 3,109,1976,8,109,1,109,1,109,3,109,1980,8,109,1,109,5,109,1983,8,109, - 10,109,12,109,1986,9,109,1,110,1,110,3,110,1990,8,110,1,110,1,110,3,110, - 1994,8,110,1,110,1,110,1,110,3,110,1999,8,110,1,111,1,111,1,112,1,112, - 3,112,2005,8,112,1,112,5,112,2008,8,112,10,112,12,112,2011,9,112,1,112, - 1,112,1,112,1,112,3,112,2017,8,112,1,113,1,113,3,113,2021,8,113,1,113, - 1,113,3,113,2025,8,113,3,113,2027,8,113,1,113,1,113,3,113,2031,8,113, - 3,113,2033,8,113,1,113,1,113,3,113,2037,8,113,3,113,2039,8,113,1,113, - 1,113,1,114,1,114,3,114,2045,8,114,1,114,1,114,1,115,1,115,3,115,2051, - 8,115,1,115,1,115,3,115,2055,8,115,1,115,3,115,2058,8,115,1,115,3,115, - 2061,8,115,1,115,1,115,1,115,1,115,3,115,2067,8,115,1,115,3,115,2070, - 8,115,1,115,3,115,2073,8,115,1,115,1,115,3,115,2077,8,115,1,115,1,115, - 1,115,1,115,3,115,2083,8,115,1,115,3,115,2086,8,115,1,115,3,115,2089, - 8,115,1,115,1,115,3,115,2093,8,115,1,116,1,116,3,116,2097,8,116,1,116, - 1,116,3,116,2101,8,116,3,116,2103,8,116,1,116,1,116,3,116,2107,8,116, - 3,116,2109,8,116,1,116,1,116,3,116,2113,8,116,3,116,2115,8,116,1,116, - 1,116,3,116,2119,8,116,3,116,2121,8,116,1,116,1,116,1,117,1,117,3,117, - 2127,8,117,1,117,1,117,3,117,2131,8,117,1,117,1,117,3,117,2135,8,117, - 1,117,1,117,3,117,2139,8,117,1,117,1,117,3,117,2143,8,117,1,117,1,117, - 3,117,2147,8,117,1,117,1,117,3,117,2151,8,117,1,117,1,117,3,117,2155, - 8,117,5,117,2157,8,117,10,117,12,117,2160,9,117,3,117,2162,8,117,1,117, - 1,117,1,118,1,118,3,118,2168,8,118,1,118,1,118,3,118,2172,8,118,1,118, - 1,118,3,118,2176,8,118,1,118,3,118,2179,8,118,1,118,5,118,2182,8,118, - 10,118,12,118,2185,9,118,1,119,1,119,3,119,2189,8,119,1,119,1,119,3,119, - 2193,8,119,1,119,1,119,3,119,2197,8,119,1,119,3,119,2200,8,119,1,119, - 3,119,2203,8,119,1,119,5,119,2206,8,119,10,119,12,119,2209,9,119,1,120, - 1,120,3,120,2213,8,120,1,120,3,120,2216,8,120,1,120,3,120,2219,8,120, - 1,120,3,120,2222,8,120,1,120,3,120,2225,8,120,1,120,3,120,2228,8,120, - 1,121,1,121,3,121,2232,8,121,1,121,1,121,3,121,2236,8,121,1,121,1,121, - 3,121,2240,8,121,1,121,1,121,3,121,2244,8,121,1,121,1,121,1,121,1,121, - 1,121,1,121,1,121,1,121,3,121,2254,8,121,1,122,3,122,2257,8,122,1,122, - 3,122,2260,8,122,1,122,1,122,3,122,2264,8,122,1,122,3,122,2267,8,122, - 1,122,3,122,2270,8,122,1,123,1,123,3,123,2274,8,123,1,123,1,123,3,123, - 2278,8,123,1,123,1,123,3,123,2282,8,123,1,123,1,123,3,123,2286,8,123, - 1,123,1,123,3,123,2290,8,123,1,123,1,123,3,123,2294,8,123,3,123,2296, - 8,123,1,123,3,123,2299,8,123,1,123,1,123,3,123,2303,8,123,1,123,1,123, - 3,123,2307,8,123,1,123,1,123,3,123,2311,8,123,1,123,1,123,3,123,2315, - 8,123,3,123,2317,8,123,1,123,1,123,1,124,1,124,3,124,2323,8,124,1,124, - 3,124,2326,8,124,1,124,3,124,2329,8,124,1,124,1,124,1,125,1,125,1,126, - 1,126,1,127,1,127,1,127,3,127,2340,8,127,1,128,1,128,1,129,1,129,1,130, - 1,130,1,130,1,130,1,130,5,130,2351,8,130,10,130,12,130,2354,9,130,1,131, - 1,131,1,131,1,131,1,131,5,131,2361,8,131,10,131,12,131,2364,9,131,1,132, - 1,132,1,132,1,132,1,132,5,132,2371,8,132,10,132,12,132,2374,9,132,1,133, - 1,133,3,133,2378,8,133,5,133,2380,8,133,10,133,12,133,2383,9,133,1,133, - 1,133,1,134,1,134,3,134,2389,8,134,1,134,1,134,3,134,2393,8,134,1,134, - 1,134,3,134,2397,8,134,1,134,1,134,3,134,2401,8,134,1,134,1,134,3,134, - 2405,8,134,1,134,1,134,1,134,1,134,1,134,1,134,3,134,2413,8,134,1,134, - 1,134,3,134,2417,8,134,1,134,1,134,3,134,2421,8,134,1,134,1,134,3,134, - 2425,8,134,1,134,1,134,4,134,2429,8,134,11,134,12,134,2430,1,134,1,134, - 3,134,2435,8,134,1,135,1,135,1,136,1,136,3,136,2441,8,136,1,136,1,136, - 3,136,2445,8,136,1,136,5,136,2448,8,136,10,136,12,136,2451,9,136,1,137, - 1,137,3,137,2455,8,137,1,137,1,137,3,137,2459,8,137,1,137,5,137,2462, - 8,137,10,137,12,137,2465,9,137,1,138,1,138,3,138,2469,8,138,1,138,1,138, - 3,138,2473,8,138,1,138,1,138,5,138,2477,8,138,10,138,12,138,2480,9,138, - 1,139,1,139,1,140,1,140,3,140,2486,8,140,1,140,1,140,3,140,2490,8,140, - 1,140,1,140,5,140,2494,8,140,10,140,12,140,2497,9,140,1,141,1,141,1,142, - 1,142,3,142,2503,8,142,1,142,1,142,3,142,2507,8,142,1,142,1,142,5,142, - 2511,8,142,10,142,12,142,2514,9,142,1,143,1,143,1,144,1,144,3,144,2520, - 8,144,1,144,1,144,3,144,2524,8,144,1,144,5,144,2527,8,144,10,144,12,144, - 2530,9,144,1,145,1,145,1,145,4,145,2535,8,145,11,145,12,145,2536,1,145, - 3,145,2540,8,145,1,146,1,146,1,146,3,146,2545,8,146,1,146,1,146,1,146, - 1,146,1,146,1,146,1,146,3,146,2554,8,146,1,146,1,146,3,146,2558,8,146, - 1,146,3,146,2561,8,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147, - 1,147,1,147,1,147,3,147,2574,8,147,1,147,3,147,2577,8,147,1,147,1,147, - 1,148,3,148,2582,8,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149, - 1,149,1,149,1,149,1,149,3,149,2596,8,149,1,150,1,150,3,150,2600,8,150, - 5,150,2602,8,150,10,150,12,150,2605,9,150,1,150,1,150,3,150,2609,8,150, - 1,150,3,150,2612,8,150,1,151,1,151,3,151,2616,8,151,1,151,5,151,2619, - 8,151,10,151,12,151,2622,9,151,1,152,1,152,1,152,1,152,1,152,1,152,1, - 152,1,152,1,152,3,152,2633,8,152,1,153,1,153,3,153,2637,8,153,1,153,1, - 153,3,153,2641,8,153,1,153,1,153,3,153,2645,8,153,1,153,1,153,1,153,1, - 153,3,153,2651,8,153,1,153,1,153,3,153,2655,8,153,1,153,1,153,3,153,2659, - 8,153,1,153,1,153,1,153,1,153,3,153,2665,8,153,1,153,1,153,3,153,2669, - 8,153,1,153,1,153,3,153,2673,8,153,1,153,1,153,1,153,1,153,3,153,2679, - 8,153,1,153,1,153,3,153,2683,8,153,1,153,1,153,3,153,2687,8,153,1,153, - 1,153,3,153,2691,8,153,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155, - 1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2709,8,156,1,157, - 1,157,1,158,1,158,3,158,2715,8,158,1,158,1,158,3,158,2719,8,158,1,158, - 1,158,3,158,2723,8,158,5,158,2725,8,158,10,158,12,158,2728,9,158,3,158, - 2730,8,158,1,158,1,158,1,159,1,159,3,159,2736,8,159,1,159,3,159,2739, - 8,159,1,160,1,160,3,160,2743,8,160,1,160,1,160,3,160,2747,8,160,1,160, - 1,160,3,160,2751,8,160,1,160,1,160,3,160,2755,8,160,5,160,2757,8,160, - 10,160,12,160,2760,9,160,1,160,1,160,1,161,1,161,3,161,2766,8,161,1,161, - 3,161,2769,8,161,1,161,1,161,3,161,2773,8,161,1,161,1,161,1,162,1,162, - 3,162,2779,8,162,1,162,1,162,3,162,2783,8,162,1,162,1,162,1,163,1,163, - 3,163,2789,8,163,1,163,1,163,3,163,2793,8,163,1,163,1,163,3,163,2797, - 8,163,1,163,1,163,1,163,3,163,2802,8,163,1,163,1,163,3,163,2806,8,163, - 1,163,1,163,3,163,2810,8,163,1,163,1,163,3,163,2814,8,163,1,163,1,163, - 1,163,3,163,2819,8,163,1,163,3,163,2822,8,163,1,163,3,163,2825,8,163, - 1,163,1,163,1,163,1,163,3,163,2831,8,163,1,163,1,163,3,163,2835,8,163, - 1,163,1,163,3,163,2839,8,163,3,163,2841,8,163,1,163,1,163,3,163,2845, - 8,163,1,163,1,163,3,163,2849,8,163,1,163,1,163,3,163,2853,8,163,5,163, - 2855,8,163,10,163,12,163,2858,9,163,3,163,2860,8,163,1,163,1,163,3,163, - 2864,8,163,1,164,1,164,1,165,1,165,3,165,2870,8,165,1,165,1,165,1,165, - 3,165,2875,8,165,3,165,2877,8,165,1,165,1,165,3,165,2881,8,165,1,166, - 1,166,3,166,2885,8,166,1,166,1,166,1,166,3,166,2890,8,166,1,166,1,166, - 3,166,2894,8,166,1,167,1,167,1,167,3,167,2899,8,167,1,167,1,167,3,167, - 2903,8,167,1,167,1,167,3,167,2907,8,167,1,167,1,167,3,167,2911,8,167, - 5,167,2913,8,167,10,167,12,167,2916,9,167,1,167,1,167,3,167,2920,8,167, - 1,168,1,168,3,168,2924,8,168,1,168,4,168,2927,8,168,11,168,12,168,2928, - 1,169,1,169,3,169,2933,8,169,1,169,1,169,3,169,2937,8,169,1,169,1,169, - 3,169,2941,8,169,1,169,1,169,3,169,2945,8,169,1,169,3,169,2948,8,169, - 1,169,3,169,2951,8,169,1,169,3,169,2954,8,169,1,169,3,169,2957,8,169, - 1,169,1,169,1,170,1,170,3,170,2963,8,170,1,170,1,170,3,170,2967,8,170, - 1,171,1,171,3,171,2971,8,171,1,171,4,171,2974,8,171,11,171,12,171,2975, - 1,171,1,171,3,171,2980,8,171,1,171,1,171,3,171,2984,8,171,1,171,4,171, - 2987,8,171,11,171,12,171,2988,3,171,2991,8,171,1,171,3,171,2994,8,171, - 1,171,1,171,3,171,2998,8,171,1,171,3,171,3001,8,171,1,171,3,171,3004, - 8,171,1,171,1,171,1,172,1,172,3,172,3010,8,172,1,172,1,172,3,172,3014, - 8,172,1,172,1,172,3,172,3018,8,172,1,172,1,172,1,173,1,173,1,174,1,174, - 3,174,3026,8,174,1,175,1,175,1,175,3,175,3031,8,175,1,176,1,176,3,176, - 3035,8,176,1,176,1,176,1,177,1,177,1,178,1,178,1,179,1,179,1,180,1,180, - 1,180,3,180,3048,8,180,1,181,1,181,1,181,1,181,1,181,3,181,3055,8,181, - 1,182,1,182,1,183,1,183,1,184,1,184,1,185,1,185,1,185,0,2,128,182,186, - 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,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166, - 168,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,288,290,292,294,296,298,300,302,304,306,308,310, - 312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346, - 348,350,352,354,356,358,360,362,364,366,368,370,0,14,4,0,91,91,107,107, - 133,133,139,139,2,0,52,53,74,75,2,0,6,6,12,16,1,0,18,19,2,0,20,20,169, - 169,2,0,21,22,164,164,1,0,167,168,2,0,86,86,144,144,2,0,67,67,82,82,1, - 0,180,181,32,0,47,47,49,49,51,51,54,57,60,60,62,63,65,67,69,70,73,73, - 76,76,78,78,83,85,87,88,91,91,95,95,97,97,99,99,101,101,103,106,108,111, - 113,114,126,131,133,134,136,136,138,138,141,141,143,143,145,145,148,150, - 154,154,158,163,165,165,2,0,13,13,26,29,2,0,15,15,30,33,2,0,34,44,169, - 169,3475,0,372,1,0,0,0,2,392,1,0,0,0,4,429,1,0,0,0,6,431,1,0,0,0,8,457, - 1,0,0,0,10,505,1,0,0,0,12,507,1,0,0,0,14,537,1,0,0,0,16,567,1,0,0,0,18, - 587,1,0,0,0,20,593,1,0,0,0,22,644,1,0,0,0,24,646,1,0,0,0,26,660,1,0,0, - 0,28,664,1,0,0,0,30,668,1,0,0,0,32,677,1,0,0,0,34,698,1,0,0,0,36,700, - 1,0,0,0,38,712,1,0,0,0,40,755,1,0,0,0,42,769,1,0,0,0,44,813,1,0,0,0,46, - 815,1,0,0,0,48,821,1,0,0,0,50,879,1,0,0,0,52,950,1,0,0,0,54,993,1,0,0, - 0,56,995,1,0,0,0,58,1015,1,0,0,0,60,1033,1,0,0,0,62,1051,1,0,0,0,64,1065, - 1,0,0,0,66,1073,1,0,0,0,68,1090,1,0,0,0,70,1107,1,0,0,0,72,1109,1,0,0, - 0,74,1116,1,0,0,0,76,1129,1,0,0,0,78,1140,1,0,0,0,80,1160,1,0,0,0,82, - 1171,1,0,0,0,84,1173,1,0,0,0,86,1186,1,0,0,0,88,1190,1,0,0,0,90,1194, - 1,0,0,0,92,1205,1,0,0,0,94,1219,1,0,0,0,96,1221,1,0,0,0,98,1235,1,0,0, - 0,100,1239,1,0,0,0,102,1248,1,0,0,0,104,1254,1,0,0,0,106,1262,1,0,0,0, - 108,1271,1,0,0,0,110,1280,1,0,0,0,112,1294,1,0,0,0,114,1298,1,0,0,0,116, - 1312,1,0,0,0,118,1323,1,0,0,0,120,1339,1,0,0,0,122,1353,1,0,0,0,124,1367, - 1,0,0,0,126,1389,1,0,0,0,128,1417,1,0,0,0,130,1426,1,0,0,0,132,1433,1, - 0,0,0,134,1441,1,0,0,0,136,1443,1,0,0,0,138,1448,1,0,0,0,140,1463,1,0, - 0,0,142,1469,1,0,0,0,144,1471,1,0,0,0,146,1483,1,0,0,0,148,1494,1,0,0, - 0,150,1498,1,0,0,0,152,1502,1,0,0,0,154,1525,1,0,0,0,156,1539,1,0,0,0, - 158,1543,1,0,0,0,160,1580,1,0,0,0,162,1586,1,0,0,0,164,1598,1,0,0,0,166, - 1616,1,0,0,0,168,1622,1,0,0,0,170,1624,1,0,0,0,172,1674,1,0,0,0,174,1678, - 1,0,0,0,176,1692,1,0,0,0,178,1711,1,0,0,0,180,1726,1,0,0,0,182,1742,1, - 0,0,0,184,1763,1,0,0,0,186,1773,1,0,0,0,188,1779,1,0,0,0,190,1801,1,0, - 0,0,192,1835,1,0,0,0,194,1837,1,0,0,0,196,1849,1,0,0,0,198,1869,1,0,0, - 0,200,1877,1,0,0,0,202,1884,1,0,0,0,204,1928,1,0,0,0,206,1937,1,0,0,0, - 208,1939,1,0,0,0,210,1954,1,0,0,0,212,1958,1,0,0,0,214,1962,1,0,0,0,216, - 1969,1,0,0,0,218,1973,1,0,0,0,220,1998,1,0,0,0,222,2000,1,0,0,0,224,2016, - 1,0,0,0,226,2018,1,0,0,0,228,2042,1,0,0,0,230,2092,1,0,0,0,232,2094,1, - 0,0,0,234,2124,1,0,0,0,236,2165,1,0,0,0,238,2186,1,0,0,0,240,2210,1,0, - 0,0,242,2253,1,0,0,0,244,2269,1,0,0,0,246,2271,1,0,0,0,248,2320,1,0,0, - 0,250,2332,1,0,0,0,252,2334,1,0,0,0,254,2336,1,0,0,0,256,2341,1,0,0,0, - 258,2343,1,0,0,0,260,2345,1,0,0,0,262,2355,1,0,0,0,264,2365,1,0,0,0,266, - 2381,1,0,0,0,268,2434,1,0,0,0,270,2436,1,0,0,0,272,2438,1,0,0,0,274,2452, - 1,0,0,0,276,2466,1,0,0,0,278,2481,1,0,0,0,280,2483,1,0,0,0,282,2498,1, - 0,0,0,284,2500,1,0,0,0,286,2515,1,0,0,0,288,2517,1,0,0,0,290,2531,1,0, - 0,0,292,2560,1,0,0,0,294,2573,1,0,0,0,296,2581,1,0,0,0,298,2595,1,0,0, - 0,300,2603,1,0,0,0,302,2613,1,0,0,0,304,2632,1,0,0,0,306,2690,1,0,0,0, - 308,2692,1,0,0,0,310,2696,1,0,0,0,312,2708,1,0,0,0,314,2710,1,0,0,0,316, - 2712,1,0,0,0,318,2733,1,0,0,0,320,2740,1,0,0,0,322,2765,1,0,0,0,324,2776, - 1,0,0,0,326,2863,1,0,0,0,328,2865,1,0,0,0,330,2880,1,0,0,0,332,2882,1, - 0,0,0,334,2919,1,0,0,0,336,2921,1,0,0,0,338,2930,1,0,0,0,340,2960,1,0, - 0,0,342,2990,1,0,0,0,344,3007,1,0,0,0,346,3021,1,0,0,0,348,3025,1,0,0, - 0,350,3027,1,0,0,0,352,3032,1,0,0,0,354,3038,1,0,0,0,356,3040,1,0,0,0, - 358,3042,1,0,0,0,360,3044,1,0,0,0,362,3054,1,0,0,0,364,3056,1,0,0,0,366, - 3058,1,0,0,0,368,3060,1,0,0,0,370,3062,1,0,0,0,372,383,3,2,1,0,373,375, - 5,186,0,0,374,373,1,0,0,0,374,375,1,0,0,0,375,376,1,0,0,0,376,378,5,1, - 0,0,377,379,5,186,0,0,378,377,1,0,0,0,378,379,1,0,0,0,379,380,1,0,0,0, - 380,382,3,2,1,0,381,374,1,0,0,0,382,385,1,0,0,0,383,381,1,0,0,0,383,384, - 1,0,0,0,384,387,1,0,0,0,385,383,1,0,0,0,386,388,5,186,0,0,387,386,1,0, - 0,0,387,388,1,0,0,0,388,389,1,0,0,0,389,390,5,0,0,1,390,1,1,0,0,0,391, - 393,3,134,67,0,392,391,1,0,0,0,392,393,1,0,0,0,393,395,1,0,0,0,394,396, - 5,186,0,0,395,394,1,0,0,0,395,396,1,0,0,0,396,397,1,0,0,0,397,402,3,4, - 2,0,398,400,5,186,0,0,399,398,1,0,0,0,399,400,1,0,0,0,400,401,1,0,0,0, - 401,403,5,1,0,0,402,399,1,0,0,0,402,403,1,0,0,0,403,3,1,0,0,0,404,430, - 3,152,76,0,405,430,3,74,37,0,406,430,3,76,38,0,407,430,3,48,24,0,408, - 430,3,50,25,0,409,430,3,52,26,0,410,430,3,66,33,0,411,430,3,68,34,0,412, - 430,3,90,45,0,413,430,3,92,46,0,414,430,3,6,3,0,415,430,3,12,6,0,416, - 430,3,14,7,0,417,430,3,34,17,0,418,430,3,38,19,0,419,430,3,36,18,0,420, - 430,3,140,70,0,421,430,3,142,71,0,422,430,3,16,8,0,423,430,3,18,9,0,424, - 430,3,20,10,0,425,430,3,26,13,0,426,430,3,28,14,0,427,430,3,30,15,0,428, - 430,3,32,16,0,429,404,1,0,0,0,429,405,1,0,0,0,429,406,1,0,0,0,429,407, - 1,0,0,0,429,408,1,0,0,0,429,409,1,0,0,0,429,410,1,0,0,0,429,411,1,0,0, - 0,429,412,1,0,0,0,429,413,1,0,0,0,429,414,1,0,0,0,429,415,1,0,0,0,429, - 416,1,0,0,0,429,417,1,0,0,0,429,418,1,0,0,0,429,419,1,0,0,0,429,420,1, - 0,0,0,429,421,1,0,0,0,429,422,1,0,0,0,429,423,1,0,0,0,429,424,1,0,0,0, - 429,425,1,0,0,0,429,426,1,0,0,0,429,427,1,0,0,0,429,428,1,0,0,0,430,5, - 1,0,0,0,431,432,5,66,0,0,432,433,5,186,0,0,433,435,3,360,180,0,434,436, - 3,8,4,0,435,434,1,0,0,0,435,436,1,0,0,0,436,437,1,0,0,0,437,438,5,186, - 0,0,438,439,5,87,0,0,439,440,5,186,0,0,440,454,3,10,5,0,441,443,5,186, - 0,0,442,441,1,0,0,0,442,443,1,0,0,0,443,444,1,0,0,0,444,446,5,2,0,0,445, - 447,5,186,0,0,446,445,1,0,0,0,446,447,1,0,0,0,447,448,1,0,0,0,448,450, - 3,24,12,0,449,451,5,186,0,0,450,449,1,0,0,0,450,451,1,0,0,0,451,452,1, - 0,0,0,452,453,5,3,0,0,453,455,1,0,0,0,454,442,1,0,0,0,454,455,1,0,0,0, - 455,7,1,0,0,0,456,458,5,186,0,0,457,456,1,0,0,0,457,458,1,0,0,0,458,459, - 1,0,0,0,459,461,5,2,0,0,460,462,5,186,0,0,461,460,1,0,0,0,461,462,1,0, - 0,0,462,480,1,0,0,0,463,474,3,360,180,0,464,466,5,186,0,0,465,464,1,0, - 0,0,465,466,1,0,0,0,466,467,1,0,0,0,467,469,5,4,0,0,468,470,5,186,0,0, - 469,468,1,0,0,0,469,470,1,0,0,0,470,471,1,0,0,0,471,473,3,360,180,0,472, - 465,1,0,0,0,473,476,1,0,0,0,474,472,1,0,0,0,474,475,1,0,0,0,475,478,1, - 0,0,0,476,474,1,0,0,0,477,479,5,186,0,0,478,477,1,0,0,0,478,479,1,0,0, - 0,479,481,1,0,0,0,480,463,1,0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482, - 483,5,3,0,0,483,9,1,0,0,0,484,506,3,44,22,0,485,487,5,2,0,0,486,488,5, - 186,0,0,487,486,1,0,0,0,487,488,1,0,0,0,488,489,1,0,0,0,489,491,3,152, - 76,0,490,492,5,186,0,0,491,490,1,0,0,0,491,492,1,0,0,0,492,493,1,0,0, - 0,493,494,5,3,0,0,494,506,1,0,0,0,495,506,3,350,175,0,496,506,3,346,173, - 0,497,498,3,346,173,0,498,500,5,5,0,0,499,501,5,186,0,0,500,499,1,0,0, - 0,500,501,1,0,0,0,501,502,1,0,0,0,502,503,3,360,180,0,503,506,1,0,0,0, - 504,506,3,326,163,0,505,484,1,0,0,0,505,485,1,0,0,0,505,495,1,0,0,0,505, - 496,1,0,0,0,505,497,1,0,0,0,505,504,1,0,0,0,506,11,1,0,0,0,507,508,5, - 66,0,0,508,509,5,186,0,0,509,510,3,360,180,0,510,511,5,186,0,0,511,512, - 5,87,0,0,512,513,5,186,0,0,513,515,5,2,0,0,514,516,5,186,0,0,515,514, - 1,0,0,0,515,516,1,0,0,0,516,517,1,0,0,0,517,528,5,171,0,0,518,520,5,186, - 0,0,519,518,1,0,0,0,519,520,1,0,0,0,520,521,1,0,0,0,521,523,5,4,0,0,522, - 524,5,186,0,0,523,522,1,0,0,0,523,524,1,0,0,0,524,525,1,0,0,0,525,527, - 5,171,0,0,526,519,1,0,0,0,527,530,1,0,0,0,528,526,1,0,0,0,528,529,1,0, - 0,0,529,531,1,0,0,0,530,528,1,0,0,0,531,532,5,3,0,0,532,533,5,186,0,0, - 533,534,5,56,0,0,534,535,5,186,0,0,535,536,5,61,0,0,536,13,1,0,0,0,537, - 538,5,66,0,0,538,539,5,186,0,0,539,541,5,2,0,0,540,542,5,186,0,0,541, - 540,1,0,0,0,541,542,1,0,0,0,542,543,1,0,0,0,543,545,3,152,76,0,544,546, - 5,186,0,0,545,544,1,0,0,0,545,546,1,0,0,0,546,547,1,0,0,0,547,548,5,3, - 0,0,548,549,5,186,0,0,549,550,5,141,0,0,550,551,5,186,0,0,551,565,5,171, - 0,0,552,554,5,186,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0,0,0, - 555,557,5,2,0,0,556,558,5,186,0,0,557,556,1,0,0,0,557,558,1,0,0,0,558, - 559,1,0,0,0,559,561,3,24,12,0,560,562,5,186,0,0,561,560,1,0,0,0,561,562, - 1,0,0,0,562,563,1,0,0,0,563,564,5,3,0,0,564,566,1,0,0,0,565,553,1,0,0, - 0,565,566,1,0,0,0,566,15,1,0,0,0,567,568,5,84,0,0,568,569,5,186,0,0,569, - 570,5,70,0,0,570,571,5,186,0,0,571,585,5,171,0,0,572,574,5,186,0,0,573, - 572,1,0,0,0,573,574,1,0,0,0,574,575,1,0,0,0,575,577,5,2,0,0,576,578,5, - 186,0,0,577,576,1,0,0,0,577,578,1,0,0,0,578,579,1,0,0,0,579,581,3,24, - 12,0,580,582,5,186,0,0,581,580,1,0,0,0,581,582,1,0,0,0,582,583,1,0,0, - 0,583,584,5,3,0,0,584,586,1,0,0,0,585,573,1,0,0,0,585,586,1,0,0,0,586, - 17,1,0,0,0,587,588,5,95,0,0,588,589,5,186,0,0,589,590,5,70,0,0,590,591, - 5,186,0,0,591,592,5,171,0,0,592,19,1,0,0,0,593,594,5,54,0,0,594,595,5, - 186,0,0,595,600,5,171,0,0,596,597,5,186,0,0,597,598,5,51,0,0,598,599, - 5,186,0,0,599,601,3,360,180,0,600,596,1,0,0,0,600,601,1,0,0,0,601,602, - 1,0,0,0,602,603,5,186,0,0,603,605,5,2,0,0,604,606,5,186,0,0,605,604,1, - 0,0,0,605,606,1,0,0,0,606,607,1,0,0,0,607,608,5,71,0,0,608,609,5,186, - 0,0,609,618,3,362,181,0,610,612,5,186,0,0,611,610,1,0,0,0,611,612,1,0, - 0,0,612,613,1,0,0,0,613,615,5,4,0,0,614,616,5,186,0,0,615,614,1,0,0,0, - 615,616,1,0,0,0,616,617,1,0,0,0,617,619,3,24,12,0,618,611,1,0,0,0,618, - 619,1,0,0,0,619,621,1,0,0,0,620,622,5,186,0,0,621,620,1,0,0,0,621,622, - 1,0,0,0,622,623,1,0,0,0,623,624,5,3,0,0,624,21,1,0,0,0,625,639,3,362, - 181,0,626,628,5,186,0,0,627,626,1,0,0,0,627,628,1,0,0,0,628,629,1,0,0, - 0,629,631,5,6,0,0,630,632,5,186,0,0,631,630,1,0,0,0,631,632,1,0,0,0,632, - 640,1,0,0,0,633,635,5,186,0,0,634,633,1,0,0,0,635,638,1,0,0,0,636,634, - 1,0,0,0,636,637,1,0,0,0,637,640,1,0,0,0,638,636,1,0,0,0,639,627,1,0,0, - 0,639,636,1,0,0,0,640,641,1,0,0,0,641,642,3,312,156,0,642,645,1,0,0,0, - 643,645,3,362,181,0,644,625,1,0,0,0,644,643,1,0,0,0,645,23,1,0,0,0,646, - 657,3,22,11,0,647,649,5,186,0,0,648,647,1,0,0,0,648,649,1,0,0,0,649,650, - 1,0,0,0,650,652,5,4,0,0,651,653,5,186,0,0,652,651,1,0,0,0,652,653,1,0, - 0,0,653,654,1,0,0,0,654,656,3,22,11,0,655,648,1,0,0,0,656,659,1,0,0,0, - 657,655,1,0,0,0,657,658,1,0,0,0,658,25,1,0,0,0,659,657,1,0,0,0,660,661, - 5,76,0,0,661,662,5,186,0,0,662,663,3,360,180,0,663,27,1,0,0,0,664,665, - 5,150,0,0,665,666,5,186,0,0,666,667,3,360,180,0,667,29,1,0,0,0,668,669, - 5,68,0,0,669,670,5,186,0,0,670,671,5,91,0,0,671,672,5,186,0,0,672,675, - 3,360,180,0,673,674,5,186,0,0,674,676,5,46,0,0,675,673,1,0,0,0,675,676, - 1,0,0,0,676,31,1,0,0,0,677,678,5,150,0,0,678,679,5,186,0,0,679,680,5, - 91,0,0,680,681,5,186,0,0,681,682,3,360,180,0,682,33,1,0,0,0,683,684,5, - 57,0,0,684,685,5,186,0,0,685,687,3,362,181,0,686,688,5,186,0,0,687,686, - 1,0,0,0,687,688,1,0,0,0,688,689,1,0,0,0,689,691,5,6,0,0,690,692,5,186, - 0,0,691,690,1,0,0,0,691,692,1,0,0,0,692,693,1,0,0,0,693,694,3,258,129, - 0,694,699,1,0,0,0,695,696,5,57,0,0,696,697,5,186,0,0,697,699,3,326,163, - 0,698,683,1,0,0,0,698,695,1,0,0,0,699,35,1,0,0,0,700,701,5,62,0,0,701, - 702,5,186,0,0,702,703,5,118,0,0,703,704,5,186,0,0,704,705,5,139,0,0,705, - 706,5,186,0,0,706,707,3,360,180,0,707,708,5,186,0,0,708,709,5,101,0,0, - 709,710,5,186,0,0,710,711,5,171,0,0,711,37,1,0,0,0,712,713,5,68,0,0,713, - 714,5,186,0,0,714,715,5,107,0,0,715,716,5,186,0,0,716,718,3,328,164,0, - 717,719,5,186,0,0,718,717,1,0,0,0,718,719,1,0,0,0,719,720,1,0,0,0,720, - 722,5,2,0,0,721,723,5,186,0,0,722,721,1,0,0,0,722,723,1,0,0,0,723,725, - 1,0,0,0,724,726,3,40,20,0,725,724,1,0,0,0,725,726,1,0,0,0,726,728,1,0, - 0,0,727,729,5,186,0,0,728,727,1,0,0,0,728,729,1,0,0,0,729,731,1,0,0,0, - 730,732,3,42,21,0,731,730,1,0,0,0,731,732,1,0,0,0,732,743,1,0,0,0,733, - 735,5,186,0,0,734,733,1,0,0,0,734,735,1,0,0,0,735,736,1,0,0,0,736,738, - 5,4,0,0,737,739,5,186,0,0,738,737,1,0,0,0,738,739,1,0,0,0,739,740,1,0, - 0,0,740,742,3,42,21,0,741,734,1,0,0,0,742,745,1,0,0,0,743,741,1,0,0,0, - 743,744,1,0,0,0,744,747,1,0,0,0,745,743,1,0,0,0,746,748,5,186,0,0,747, - 746,1,0,0,0,747,748,1,0,0,0,748,749,1,0,0,0,749,750,5,3,0,0,750,751,5, - 186,0,0,751,752,5,51,0,0,752,753,5,186,0,0,753,754,3,258,129,0,754,39, - 1,0,0,0,755,766,3,362,181,0,756,758,5,186,0,0,757,756,1,0,0,0,757,758, - 1,0,0,0,758,759,1,0,0,0,759,761,5,4,0,0,760,762,5,186,0,0,761,760,1,0, - 0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,765,3,362,181,0,764,757,1,0,0, - 0,765,768,1,0,0,0,766,764,1,0,0,0,766,767,1,0,0,0,767,41,1,0,0,0,768, - 766,1,0,0,0,769,771,3,362,181,0,770,772,5,186,0,0,771,770,1,0,0,0,771, - 772,1,0,0,0,772,773,1,0,0,0,773,774,5,167,0,0,774,776,5,6,0,0,775,777, - 5,186,0,0,776,775,1,0,0,0,776,777,1,0,0,0,777,778,1,0,0,0,778,779,3,312, - 156,0,779,43,1,0,0,0,780,782,5,7,0,0,781,783,5,186,0,0,782,781,1,0,0, - 0,782,783,1,0,0,0,783,784,1,0,0,0,784,795,5,171,0,0,785,787,5,186,0,0, - 786,785,1,0,0,0,786,787,1,0,0,0,787,788,1,0,0,0,788,790,5,4,0,0,789,791, - 5,186,0,0,790,789,1,0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,794,5,171, - 0,0,793,786,1,0,0,0,794,797,1,0,0,0,795,793,1,0,0,0,795,796,1,0,0,0,796, - 798,1,0,0,0,797,795,1,0,0,0,798,814,5,8,0,0,799,814,5,171,0,0,800,802, - 5,90,0,0,801,803,5,186,0,0,802,801,1,0,0,0,802,803,1,0,0,0,803,804,1, - 0,0,0,804,806,5,2,0,0,805,807,5,186,0,0,806,805,1,0,0,0,806,807,1,0,0, - 0,807,808,1,0,0,0,808,810,5,171,0,0,809,811,5,186,0,0,810,809,1,0,0,0, - 810,811,1,0,0,0,811,812,1,0,0,0,812,814,5,3,0,0,813,780,1,0,0,0,813,799, - 1,0,0,0,813,800,1,0,0,0,814,45,1,0,0,0,815,816,5,97,0,0,816,817,5,186, - 0,0,817,818,5,115,0,0,818,819,5,186,0,0,819,820,5,82,0,0,820,47,1,0,0, - 0,821,822,5,68,0,0,822,823,5,186,0,0,823,824,5,114,0,0,824,825,5,186, - 0,0,825,826,5,139,0,0,826,830,5,186,0,0,827,828,3,46,23,0,828,829,5,186, - 0,0,829,831,1,0,0,0,830,827,1,0,0,0,830,831,1,0,0,0,831,832,1,0,0,0,832, - 860,3,360,180,0,833,835,5,186,0,0,834,833,1,0,0,0,834,835,1,0,0,0,835, - 836,1,0,0,0,836,838,5,2,0,0,837,839,5,186,0,0,838,837,1,0,0,0,838,839, - 1,0,0,0,839,840,1,0,0,0,840,842,3,114,57,0,841,843,5,186,0,0,842,841, - 1,0,0,0,842,843,1,0,0,0,843,849,1,0,0,0,844,846,5,4,0,0,845,847,5,186, - 0,0,846,845,1,0,0,0,846,847,1,0,0,0,847,848,1,0,0,0,848,850,3,118,59, - 0,849,844,1,0,0,0,849,850,1,0,0,0,850,852,1,0,0,0,851,853,5,186,0,0,852, - 851,1,0,0,0,852,853,1,0,0,0,853,854,1,0,0,0,854,855,5,3,0,0,855,861,1, - 0,0,0,856,857,5,186,0,0,857,858,5,51,0,0,858,859,5,186,0,0,859,861,3, - 152,76,0,860,834,1,0,0,0,860,856,1,0,0,0,861,877,1,0,0,0,862,863,5,186, - 0,0,863,865,5,153,0,0,864,866,5,186,0,0,865,864,1,0,0,0,865,866,1,0,0, - 0,866,867,1,0,0,0,867,869,5,2,0,0,868,870,5,186,0,0,869,868,1,0,0,0,869, - 870,1,0,0,0,870,871,1,0,0,0,871,873,3,24,12,0,872,874,5,186,0,0,873,872, - 1,0,0,0,873,874,1,0,0,0,874,875,1,0,0,0,875,876,5,3,0,0,876,878,1,0,0, - 0,877,862,1,0,0,0,877,878,1,0,0,0,878,49,1,0,0,0,879,880,5,68,0,0,880, - 881,5,186,0,0,881,882,5,128,0,0,882,883,5,186,0,0,883,886,5,139,0,0,884, - 885,5,186,0,0,885,887,5,92,0,0,886,884,1,0,0,0,886,887,1,0,0,0,887,890, - 1,0,0,0,888,889,5,186,0,0,889,891,3,46,23,0,890,888,1,0,0,0,890,891,1, - 0,0,0,891,892,1,0,0,0,892,893,5,186,0,0,893,895,3,360,180,0,894,896,5, - 186,0,0,895,894,1,0,0,0,895,896,1,0,0,0,896,897,1,0,0,0,897,899,5,2,0, - 0,898,900,5,186,0,0,899,898,1,0,0,0,899,900,1,0,0,0,900,901,1,0,0,0,901, - 903,3,62,31,0,902,904,5,186,0,0,903,902,1,0,0,0,903,904,1,0,0,0,904,931, - 1,0,0,0,905,907,5,4,0,0,906,908,5,186,0,0,907,906,1,0,0,0,907,908,1,0, - 0,0,908,909,1,0,0,0,909,911,3,114,57,0,910,912,5,186,0,0,911,910,1,0, - 0,0,911,912,1,0,0,0,912,914,1,0,0,0,913,905,1,0,0,0,913,914,1,0,0,0,914, - 923,1,0,0,0,915,917,5,4,0,0,916,918,5,186,0,0,917,916,1,0,0,0,917,918, - 1,0,0,0,918,919,1,0,0,0,919,921,3,362,181,0,920,922,5,186,0,0,921,920, - 1,0,0,0,921,922,1,0,0,0,922,924,1,0,0,0,923,915,1,0,0,0,923,924,1,0,0, - 0,924,925,1,0,0,0,925,932,5,3,0,0,926,927,5,3,0,0,927,928,5,186,0,0,928, - 929,5,51,0,0,929,930,5,186,0,0,930,932,3,152,76,0,931,913,1,0,0,0,931, - 926,1,0,0,0,932,948,1,0,0,0,933,934,5,186,0,0,934,936,5,153,0,0,935,937, - 5,186,0,0,936,935,1,0,0,0,936,937,1,0,0,0,937,938,1,0,0,0,938,940,5,2, - 0,0,939,941,5,186,0,0,940,939,1,0,0,0,940,941,1,0,0,0,941,942,1,0,0,0, - 942,944,3,24,12,0,943,945,5,186,0,0,944,943,1,0,0,0,944,945,1,0,0,0,945, - 946,1,0,0,0,946,947,5,3,0,0,947,949,1,0,0,0,948,933,1,0,0,0,948,949,1, - 0,0,0,949,51,1,0,0,0,950,953,5,68,0,0,951,952,5,186,0,0,952,954,3,362, - 181,0,953,951,1,0,0,0,953,954,1,0,0,0,954,955,1,0,0,0,955,956,5,186,0, - 0,956,959,5,96,0,0,957,958,5,186,0,0,958,960,3,360,180,0,959,957,1,0, - 0,0,959,960,1,0,0,0,960,963,1,0,0,0,961,962,5,186,0,0,962,964,3,46,23, - 0,963,961,1,0,0,0,963,964,1,0,0,0,964,965,1,0,0,0,965,966,5,186,0,0,966, - 967,5,89,0,0,967,968,5,186,0,0,968,969,3,54,27,0,969,970,5,186,0,0,970, - 971,5,118,0,0,971,972,5,186,0,0,972,989,3,60,30,0,973,974,5,186,0,0,974, - 976,5,120,0,0,975,977,5,186,0,0,976,975,1,0,0,0,976,977,1,0,0,0,977,978, - 1,0,0,0,978,980,5,9,0,0,979,981,5,186,0,0,980,979,1,0,0,0,980,981,1,0, - 0,0,981,983,1,0,0,0,982,984,3,24,12,0,983,982,1,0,0,0,983,984,1,0,0,0, - 984,986,1,0,0,0,985,987,5,186,0,0,986,985,1,0,0,0,986,987,1,0,0,0,987, - 988,1,0,0,0,988,990,5,10,0,0,989,973,1,0,0,0,989,990,1,0,0,0,990,53,1, - 0,0,0,991,994,3,56,28,0,992,994,3,58,29,0,993,991,1,0,0,0,993,992,1,0, - 0,0,994,55,1,0,0,0,995,997,5,2,0,0,996,998,5,186,0,0,997,996,1,0,0,0, - 997,998,1,0,0,0,998,1000,1,0,0,0,999,1001,3,346,173,0,1000,999,1,0,0, - 0,1000,1001,1,0,0,0,1001,1003,1,0,0,0,1002,1004,5,186,0,0,1003,1002,1, - 0,0,0,1003,1004,1,0,0,0,1004,1005,1,0,0,0,1005,1007,5,167,0,0,1006,1008, - 5,186,0,0,1007,1006,1,0,0,0,1007,1008,1,0,0,0,1008,1009,1,0,0,0,1009, - 1011,3,254,127,0,1010,1012,5,186,0,0,1011,1010,1,0,0,0,1011,1012,1,0, - 0,0,1012,1013,1,0,0,0,1013,1014,5,3,0,0,1014,57,1,0,0,0,1015,1017,5,2, - 0,0,1016,1018,5,186,0,0,1017,1016,1,0,0,0,1017,1018,1,0,0,0,1018,1019, - 1,0,0,0,1019,1021,5,3,0,0,1020,1022,5,186,0,0,1021,1020,1,0,0,0,1021, - 1022,1,0,0,0,1022,1023,1,0,0,0,1023,1025,3,230,115,0,1024,1026,5,186, - 0,0,1025,1024,1,0,0,0,1025,1026,1,0,0,0,1026,1027,1,0,0,0,1027,1029,5, - 2,0,0,1028,1030,5,186,0,0,1029,1028,1,0,0,0,1029,1030,1,0,0,0,1030,1031, - 1,0,0,0,1031,1032,5,3,0,0,1032,59,1,0,0,0,1033,1035,5,2,0,0,1034,1036, - 5,186,0,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0,1036,1037,1,0,0,0,1037, - 1039,3,346,173,0,1038,1040,5,186,0,0,1039,1038,1,0,0,0,1039,1040,1,0, - 0,0,1040,1041,1,0,0,0,1041,1043,5,5,0,0,1042,1044,5,186,0,0,1043,1042, - 1,0,0,0,1043,1044,1,0,0,0,1044,1045,1,0,0,0,1045,1047,3,354,177,0,1046, - 1048,5,186,0,0,1047,1046,1,0,0,0,1047,1048,1,0,0,0,1048,1049,1,0,0,0, - 1049,1050,5,3,0,0,1050,61,1,0,0,0,1051,1062,3,64,32,0,1052,1054,5,186, - 0,0,1053,1052,1,0,0,0,1053,1054,1,0,0,0,1054,1055,1,0,0,0,1055,1057,5, - 4,0,0,1056,1058,5,186,0,0,1057,1056,1,0,0,0,1057,1058,1,0,0,0,1058,1059, - 1,0,0,0,1059,1061,3,64,32,0,1060,1053,1,0,0,0,1061,1064,1,0,0,0,1062, - 1060,1,0,0,0,1062,1063,1,0,0,0,1063,63,1,0,0,0,1064,1062,1,0,0,0,1065, - 1066,5,87,0,0,1066,1067,5,186,0,0,1067,1068,3,360,180,0,1068,1069,5,186, - 0,0,1069,1070,5,141,0,0,1070,1071,5,186,0,0,1071,1072,3,360,180,0,1072, - 65,1,0,0,0,1073,1074,5,68,0,0,1074,1075,5,186,0,0,1075,1076,5,133,0,0, - 1076,1080,5,186,0,0,1077,1078,3,46,23,0,1078,1079,5,186,0,0,1079,1081, - 1,0,0,0,1080,1077,1,0,0,0,1080,1081,1,0,0,0,1081,1082,1,0,0,0,1082,1087, - 3,360,180,0,1083,1084,5,186,0,0,1084,1086,3,70,35,0,1085,1083,1,0,0,0, - 1086,1089,1,0,0,0,1087,1085,1,0,0,0,1087,1088,1,0,0,0,1088,67,1,0,0,0, - 1089,1087,1,0,0,0,1090,1091,5,68,0,0,1091,1092,5,186,0,0,1092,1093,5, - 145,0,0,1093,1094,5,186,0,0,1094,1095,3,360,180,0,1095,1096,5,186,0,0, - 1096,1097,5,51,0,0,1097,1098,5,186,0,0,1098,1100,3,128,64,0,1099,1101, - 5,186,0,0,1100,1099,1,0,0,0,1100,1101,1,0,0,0,1101,69,1,0,0,0,1102,1108, - 3,78,39,0,1103,1108,3,80,40,0,1104,1108,3,82,41,0,1105,1108,3,84,42,0, - 1106,1108,3,86,43,0,1107,1102,1,0,0,0,1107,1103,1,0,0,0,1107,1104,1,0, - 0,0,1107,1105,1,0,0,0,1107,1106,1,0,0,0,1108,71,1,0,0,0,1109,1110,5,186, - 0,0,1110,1111,5,153,0,0,1111,1112,5,186,0,0,1112,1113,5,160,0,0,1113, - 1114,5,186,0,0,1114,1115,5,171,0,0,1115,73,1,0,0,0,1116,1117,5,68,0,0, - 1117,1118,5,186,0,0,1118,1119,5,159,0,0,1119,1123,5,186,0,0,1120,1121, - 3,46,23,0,1121,1122,5,186,0,0,1122,1124,1,0,0,0,1123,1120,1,0,0,0,1123, - 1124,1,0,0,0,1124,1125,1,0,0,0,1125,1127,3,346,173,0,1126,1128,3,72,36, - 0,1127,1126,1,0,0,0,1127,1128,1,0,0,0,1128,75,1,0,0,0,1129,1130,5,68, - 0,0,1130,1131,5,186,0,0,1131,1132,5,161,0,0,1132,1136,5,186,0,0,1133, - 1134,3,46,23,0,1134,1135,5,186,0,0,1135,1137,1,0,0,0,1136,1133,1,0,0, - 0,1136,1137,1,0,0,0,1137,1138,1,0,0,0,1138,1139,3,346,173,0,1139,77,1, - 0,0,0,1140,1141,5,99,0,0,1141,1144,5,186,0,0,1142,1143,5,56,0,0,1143, - 1145,5,186,0,0,1144,1142,1,0,0,0,1144,1145,1,0,0,0,1145,1147,1,0,0,0, - 1146,1148,5,169,0,0,1147,1146,1,0,0,0,1147,1148,1,0,0,0,1148,1149,1,0, - 0,0,1149,1150,3,356,178,0,1150,79,1,0,0,0,1151,1152,5,113,0,0,1152,1153, - 5,186,0,0,1153,1161,5,111,0,0,1154,1155,5,111,0,0,1155,1157,5,186,0,0, - 1156,1158,5,169,0,0,1157,1156,1,0,0,0,1157,1158,1,0,0,0,1158,1159,1,0, - 0,0,1159,1161,3,356,178,0,1160,1151,1,0,0,0,1160,1154,1,0,0,0,1161,81, - 1,0,0,0,1162,1163,5,113,0,0,1163,1164,5,186,0,0,1164,1172,5,109,0,0,1165, - 1166,5,109,0,0,1166,1168,5,186,0,0,1167,1169,5,169,0,0,1168,1167,1,0, - 0,0,1168,1169,1,0,0,0,1169,1170,1,0,0,0,1170,1172,3,356,178,0,1171,1162, - 1,0,0,0,1171,1165,1,0,0,0,1172,83,1,0,0,0,1173,1174,5,136,0,0,1174,1177, - 5,186,0,0,1175,1176,5,153,0,0,1176,1178,5,186,0,0,1177,1175,1,0,0,0,1177, - 1178,1,0,0,0,1178,1180,1,0,0,0,1179,1181,5,169,0,0,1180,1179,1,0,0,0, - 1180,1181,1,0,0,0,1181,1182,1,0,0,0,1182,1183,3,356,178,0,1183,85,1,0, - 0,0,1184,1185,5,113,0,0,1185,1187,5,186,0,0,1186,1184,1,0,0,0,1186,1187, - 1,0,0,0,1187,1188,1,0,0,0,1188,1189,5,69,0,0,1189,87,1,0,0,0,1190,1191, - 5,97,0,0,1191,1192,5,186,0,0,1192,1193,5,82,0,0,1193,89,1,0,0,0,1194, - 1195,5,78,0,0,1195,1196,5,186,0,0,1196,1197,7,0,0,0,1197,1201,5,186,0, - 0,1198,1199,3,88,44,0,1199,1200,5,186,0,0,1200,1202,1,0,0,0,1201,1198, - 1,0,0,0,1201,1202,1,0,0,0,1202,1203,1,0,0,0,1203,1204,3,360,180,0,1204, - 91,1,0,0,0,1205,1206,5,49,0,0,1206,1207,5,186,0,0,1207,1208,5,139,0,0, - 1208,1209,5,186,0,0,1209,1210,3,360,180,0,1210,1211,5,186,0,0,1211,1212, - 3,94,47,0,1212,93,1,0,0,0,1213,1220,3,96,48,0,1214,1220,3,100,50,0,1215, - 1220,3,102,51,0,1216,1220,3,104,52,0,1217,1220,3,106,53,0,1218,1220,3, - 108,54,0,1219,1213,1,0,0,0,1219,1214,1,0,0,0,1219,1215,1,0,0,0,1219,1216, - 1,0,0,0,1219,1217,1,0,0,0,1219,1218,1,0,0,0,1220,95,1,0,0,0,1221,1222, - 5,47,0,0,1222,1226,5,186,0,0,1223,1224,3,46,23,0,1224,1225,5,186,0,0, - 1225,1227,1,0,0,0,1226,1223,1,0,0,0,1226,1227,1,0,0,0,1227,1228,1,0,0, - 0,1228,1229,3,354,177,0,1229,1230,5,186,0,0,1230,1233,3,128,64,0,1231, - 1232,5,186,0,0,1232,1234,3,98,49,0,1233,1231,1,0,0,0,1233,1234,1,0,0, - 0,1234,97,1,0,0,0,1235,1236,5,72,0,0,1236,1237,5,186,0,0,1237,1238,3, - 258,129,0,1238,99,1,0,0,0,1239,1240,5,78,0,0,1240,1244,5,186,0,0,1241, - 1242,3,88,44,0,1242,1243,5,186,0,0,1243,1245,1,0,0,0,1244,1241,1,0,0, - 0,1244,1245,1,0,0,0,1245,1246,1,0,0,0,1246,1247,3,354,177,0,1247,101, - 1,0,0,0,1248,1249,5,129,0,0,1249,1250,5,186,0,0,1250,1251,5,141,0,0,1251, - 1252,5,186,0,0,1252,1253,3,360,180,0,1253,103,1,0,0,0,1254,1255,5,129, - 0,0,1255,1256,5,186,0,0,1256,1257,3,354,177,0,1257,1258,5,186,0,0,1258, - 1259,5,141,0,0,1259,1260,5,186,0,0,1260,1261,3,354,177,0,1261,105,1,0, - 0,0,1262,1263,5,47,0,0,1263,1267,5,186,0,0,1264,1265,3,46,23,0,1265,1266, - 5,186,0,0,1266,1268,1,0,0,0,1267,1264,1,0,0,0,1267,1268,1,0,0,0,1268, - 1269,1,0,0,0,1269,1270,3,64,32,0,1270,107,1,0,0,0,1271,1272,5,78,0,0, - 1272,1276,5,186,0,0,1273,1274,3,88,44,0,1274,1275,5,186,0,0,1275,1277, - 1,0,0,0,1276,1273,1,0,0,0,1276,1277,1,0,0,0,1277,1278,1,0,0,0,1278,1279, - 3,64,32,0,1279,109,1,0,0,0,1280,1291,3,112,56,0,1281,1283,5,186,0,0,1282, - 1281,1,0,0,0,1282,1283,1,0,0,0,1283,1284,1,0,0,0,1284,1286,5,4,0,0,1285, - 1287,5,186,0,0,1286,1285,1,0,0,0,1286,1287,1,0,0,0,1287,1288,1,0,0,0, - 1288,1290,3,112,56,0,1289,1282,1,0,0,0,1290,1293,1,0,0,0,1291,1289,1, - 0,0,0,1291,1292,1,0,0,0,1292,111,1,0,0,0,1293,1291,1,0,0,0,1294,1295, - 3,354,177,0,1295,1296,5,186,0,0,1296,1297,3,128,64,0,1297,113,1,0,0,0, - 1298,1309,3,116,58,0,1299,1301,5,186,0,0,1300,1299,1,0,0,0,1300,1301, - 1,0,0,0,1301,1302,1,0,0,0,1302,1304,5,4,0,0,1303,1305,5,186,0,0,1304, - 1303,1,0,0,0,1304,1305,1,0,0,0,1305,1306,1,0,0,0,1306,1308,3,116,58,0, - 1307,1300,1,0,0,0,1308,1311,1,0,0,0,1309,1307,1,0,0,0,1309,1310,1,0,0, - 0,1310,115,1,0,0,0,1311,1309,1,0,0,0,1312,1315,3,112,56,0,1313,1314,5, - 186,0,0,1314,1316,3,98,49,0,1315,1313,1,0,0,0,1315,1316,1,0,0,0,1316, - 1321,1,0,0,0,1317,1318,5,186,0,0,1318,1319,5,124,0,0,1319,1320,5,186, - 0,0,1320,1322,5,103,0,0,1321,1317,1,0,0,0,1321,1322,1,0,0,0,1322,117, - 1,0,0,0,1323,1324,5,124,0,0,1324,1325,5,186,0,0,1325,1327,5,103,0,0,1326, - 1328,5,186,0,0,1327,1326,1,0,0,0,1327,1328,1,0,0,0,1328,1329,1,0,0,0, - 1329,1331,5,2,0,0,1330,1332,5,186,0,0,1331,1330,1,0,0,0,1331,1332,1,0, - 0,0,1332,1333,1,0,0,0,1333,1335,3,354,177,0,1334,1336,5,186,0,0,1335, - 1334,1,0,0,0,1335,1336,1,0,0,0,1336,1337,1,0,0,0,1337,1338,5,3,0,0,1338, - 119,1,0,0,0,1339,1341,5,146,0,0,1340,1342,5,186,0,0,1341,1340,1,0,0,0, - 1341,1342,1,0,0,0,1342,1343,1,0,0,0,1343,1345,5,2,0,0,1344,1346,5,186, - 0,0,1345,1344,1,0,0,0,1345,1346,1,0,0,0,1346,1347,1,0,0,0,1347,1349,3, - 110,55,0,1348,1350,5,186,0,0,1349,1348,1,0,0,0,1349,1350,1,0,0,0,1350, - 1351,1,0,0,0,1351,1352,5,3,0,0,1352,121,1,0,0,0,1353,1355,5,138,0,0,1354, - 1356,5,186,0,0,1355,1354,1,0,0,0,1355,1356,1,0,0,0,1356,1357,1,0,0,0, - 1357,1359,5,2,0,0,1358,1360,5,186,0,0,1359,1358,1,0,0,0,1359,1360,1,0, - 0,0,1360,1361,1,0,0,0,1361,1363,3,110,55,0,1362,1364,5,186,0,0,1363,1362, - 1,0,0,0,1363,1364,1,0,0,0,1364,1365,1,0,0,0,1365,1366,5,3,0,0,1366,123, - 1,0,0,0,1367,1369,5,162,0,0,1368,1370,5,186,0,0,1369,1368,1,0,0,0,1369, - 1370,1,0,0,0,1370,1371,1,0,0,0,1371,1373,5,2,0,0,1372,1374,5,186,0,0, - 1373,1372,1,0,0,0,1373,1374,1,0,0,0,1374,1375,1,0,0,0,1375,1377,3,128, - 64,0,1376,1378,5,186,0,0,1377,1376,1,0,0,0,1377,1378,1,0,0,0,1378,1379, - 1,0,0,0,1379,1381,5,4,0,0,1380,1382,5,186,0,0,1381,1380,1,0,0,0,1381, - 1382,1,0,0,0,1382,1383,1,0,0,0,1383,1385,3,128,64,0,1384,1386,5,186,0, - 0,1385,1384,1,0,0,0,1385,1386,1,0,0,0,1386,1387,1,0,0,0,1387,1388,5,3, - 0,0,1388,125,1,0,0,0,1389,1391,5,163,0,0,1390,1392,5,186,0,0,1391,1390, - 1,0,0,0,1391,1392,1,0,0,0,1392,1393,1,0,0,0,1393,1395,5,2,0,0,1394,1396, - 5,186,0,0,1395,1394,1,0,0,0,1395,1396,1,0,0,0,1396,1397,1,0,0,0,1397, - 1399,3,356,178,0,1398,1400,5,186,0,0,1399,1398,1,0,0,0,1399,1400,1,0, - 0,0,1400,1401,1,0,0,0,1401,1403,5,4,0,0,1402,1404,5,186,0,0,1403,1402, - 1,0,0,0,1403,1404,1,0,0,0,1404,1405,1,0,0,0,1405,1407,3,356,178,0,1406, - 1408,5,186,0,0,1407,1406,1,0,0,0,1407,1408,1,0,0,0,1408,1409,1,0,0,0, - 1409,1410,5,3,0,0,1410,127,1,0,0,0,1411,1412,6,64,-1,0,1412,1418,3,362, - 181,0,1413,1418,3,120,60,0,1414,1418,3,122,61,0,1415,1418,3,124,62,0, - 1416,1418,3,126,63,0,1417,1411,1,0,0,0,1417,1413,1,0,0,0,1417,1414,1, - 0,0,0,1417,1415,1,0,0,0,1417,1416,1,0,0,0,1418,1423,1,0,0,0,1419,1420, - 10,5,0,0,1420,1422,3,130,65,0,1421,1419,1,0,0,0,1422,1425,1,0,0,0,1423, - 1421,1,0,0,0,1423,1424,1,0,0,0,1424,129,1,0,0,0,1425,1423,1,0,0,0,1426, - 1430,3,132,66,0,1427,1429,3,132,66,0,1428,1427,1,0,0,0,1429,1432,1,0, - 0,0,1430,1428,1,0,0,0,1430,1431,1,0,0,0,1431,131,1,0,0,0,1432,1430,1, - 0,0,0,1433,1435,5,7,0,0,1434,1436,3,356,178,0,1435,1434,1,0,0,0,1435, - 1436,1,0,0,0,1436,1437,1,0,0,0,1437,1438,5,8,0,0,1438,133,1,0,0,0,1439, - 1442,3,136,68,0,1440,1442,3,138,69,0,1441,1439,1,0,0,0,1441,1440,1,0, - 0,0,1442,135,1,0,0,0,1443,1446,5,83,0,0,1444,1445,5,186,0,0,1445,1447, - 5,106,0,0,1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,137,1,0,0,0,1448,1449, - 5,125,0,0,1449,139,1,0,0,0,1450,1451,5,55,0,0,1451,1452,5,186,0,0,1452, - 1464,5,143,0,0,1453,1454,5,55,0,0,1454,1455,5,186,0,0,1455,1456,5,143, - 0,0,1456,1457,5,186,0,0,1457,1458,5,127,0,0,1458,1459,5,186,0,0,1459, - 1464,5,119,0,0,1460,1464,5,63,0,0,1461,1464,5,131,0,0,1462,1464,5,60, - 0,0,1463,1450,1,0,0,0,1463,1453,1,0,0,0,1463,1460,1,0,0,0,1463,1461,1, - 0,0,0,1463,1462,1,0,0,0,1464,141,1,0,0,0,1465,1470,3,144,72,0,1466,1470, - 3,146,73,0,1467,1470,3,148,74,0,1468,1470,3,150,75,0,1469,1465,1,0,0, - 0,1469,1466,1,0,0,0,1469,1467,1,0,0,0,1469,1468,1,0,0,0,1470,143,1,0, - 0,0,1471,1472,5,105,0,0,1472,1475,5,186,0,0,1473,1474,5,85,0,0,1474,1476, - 5,186,0,0,1475,1473,1,0,0,0,1475,1476,1,0,0,0,1476,1479,1,0,0,0,1477, - 1480,5,171,0,0,1478,1480,3,346,173,0,1479,1477,1,0,0,0,1479,1478,1,0, - 0,0,1480,145,1,0,0,0,1481,1482,5,88,0,0,1482,1484,5,186,0,0,1483,1481, - 1,0,0,0,1483,1484,1,0,0,0,1484,1485,1,0,0,0,1485,1486,5,100,0,0,1486, - 1487,5,186,0,0,1487,1492,3,346,173,0,1488,1489,5,186,0,0,1489,1490,5, - 87,0,0,1490,1491,5,186,0,0,1491,1493,5,171,0,0,1492,1488,1,0,0,0,1492, - 1493,1,0,0,0,1493,147,1,0,0,0,1494,1495,5,148,0,0,1495,1496,5,186,0,0, - 1496,1497,3,346,173,0,1497,149,1,0,0,0,1498,1499,5,149,0,0,1499,1500, - 5,186,0,0,1500,1501,3,346,173,0,1501,151,1,0,0,0,1502,1503,3,154,77,0, - 1503,153,1,0,0,0,1504,1511,3,158,79,0,1505,1507,5,186,0,0,1506,1505,1, - 0,0,0,1506,1507,1,0,0,0,1507,1508,1,0,0,0,1508,1510,3,156,78,0,1509,1506, - 1,0,0,0,1510,1513,1,0,0,0,1511,1509,1,0,0,0,1511,1512,1,0,0,0,1512,1526, - 1,0,0,0,1513,1511,1,0,0,0,1514,1516,3,200,100,0,1515,1517,5,186,0,0,1516, - 1515,1,0,0,0,1516,1517,1,0,0,0,1517,1519,1,0,0,0,1518,1514,1,0,0,0,1519, - 1520,1,0,0,0,1520,1518,1,0,0,0,1520,1521,1,0,0,0,1521,1522,1,0,0,0,1522, - 1523,3,158,79,0,1523,1524,6,77,-1,0,1524,1526,1,0,0,0,1525,1504,1,0,0, - 0,1525,1518,1,0,0,0,1526,155,1,0,0,0,1527,1528,5,146,0,0,1528,1529,5, - 186,0,0,1529,1531,5,48,0,0,1530,1532,5,186,0,0,1531,1530,1,0,0,0,1531, - 1532,1,0,0,0,1532,1533,1,0,0,0,1533,1540,3,158,79,0,1534,1536,5,146,0, - 0,1535,1537,5,186,0,0,1536,1535,1,0,0,0,1536,1537,1,0,0,0,1537,1538,1, - 0,0,0,1538,1540,3,158,79,0,1539,1527,1,0,0,0,1539,1534,1,0,0,0,1540,157, - 1,0,0,0,1541,1544,3,160,80,0,1542,1544,3,162,81,0,1543,1541,1,0,0,0,1543, - 1542,1,0,0,0,1544,159,1,0,0,0,1545,1547,3,168,84,0,1546,1548,5,186,0, - 0,1547,1546,1,0,0,0,1547,1548,1,0,0,0,1548,1550,1,0,0,0,1549,1545,1,0, - 0,0,1550,1553,1,0,0,0,1551,1549,1,0,0,0,1551,1552,1,0,0,0,1552,1554,1, - 0,0,0,1553,1551,1,0,0,0,1554,1581,3,200,100,0,1555,1557,3,168,84,0,1556, - 1558,5,186,0,0,1557,1556,1,0,0,0,1557,1558,1,0,0,0,1558,1560,1,0,0,0, - 1559,1555,1,0,0,0,1560,1563,1,0,0,0,1561,1559,1,0,0,0,1561,1562,1,0,0, - 0,1562,1564,1,0,0,0,1563,1561,1,0,0,0,1564,1571,3,166,83,0,1565,1567, - 5,186,0,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1568,1,0,0,0,1568, - 1570,3,166,83,0,1569,1566,1,0,0,0,1570,1573,1,0,0,0,1571,1569,1,0,0,0, - 1571,1572,1,0,0,0,1572,1578,1,0,0,0,1573,1571,1,0,0,0,1574,1576,5,186, - 0,0,1575,1574,1,0,0,0,1575,1576,1,0,0,0,1576,1577,1,0,0,0,1577,1579,3, - 200,100,0,1578,1575,1,0,0,0,1578,1579,1,0,0,0,1579,1581,1,0,0,0,1580, - 1551,1,0,0,0,1580,1561,1,0,0,0,1581,161,1,0,0,0,1582,1584,3,164,82,0, - 1583,1585,5,186,0,0,1584,1583,1,0,0,0,1584,1585,1,0,0,0,1585,1587,1,0, - 0,0,1586,1582,1,0,0,0,1587,1588,1,0,0,0,1588,1586,1,0,0,0,1588,1589,1, - 0,0,0,1589,1590,1,0,0,0,1590,1591,3,160,80,0,1591,163,1,0,0,0,1592,1594, - 3,168,84,0,1593,1595,5,186,0,0,1594,1593,1,0,0,0,1594,1595,1,0,0,0,1595, - 1597,1,0,0,0,1596,1592,1,0,0,0,1597,1600,1,0,0,0,1598,1596,1,0,0,0,1598, - 1599,1,0,0,0,1599,1607,1,0,0,0,1600,1598,1,0,0,0,1601,1603,3,166,83,0, - 1602,1604,5,186,0,0,1603,1602,1,0,0,0,1603,1604,1,0,0,0,1604,1606,1,0, - 0,0,1605,1601,1,0,0,0,1606,1609,1,0,0,0,1607,1605,1,0,0,0,1607,1608,1, - 0,0,0,1608,1610,1,0,0,0,1609,1607,1,0,0,0,1610,1611,3,198,99,0,1611,165, - 1,0,0,0,1612,1617,3,186,93,0,1613,1617,3,188,94,0,1614,1617,3,192,96, - 0,1615,1617,3,196,98,0,1616,1612,1,0,0,0,1616,1613,1,0,0,0,1616,1614, - 1,0,0,0,1616,1615,1,0,0,0,1617,167,1,0,0,0,1618,1623,3,178,89,0,1619, - 1623,3,184,92,0,1620,1623,3,176,88,0,1621,1623,3,170,85,0,1622,1618,1, - 0,0,0,1622,1619,1,0,0,0,1622,1620,1,0,0,0,1622,1621,1,0,0,0,1623,169, - 1,0,0,0,1624,1642,5,105,0,0,1625,1626,5,186,0,0,1626,1627,5,153,0,0,1627, - 1628,5,186,0,0,1628,1630,5,93,0,0,1629,1631,5,186,0,0,1630,1629,1,0,0, - 0,1630,1631,1,0,0,0,1631,1632,1,0,0,0,1632,1634,5,2,0,0,1633,1635,5,186, - 0,0,1634,1633,1,0,0,0,1634,1635,1,0,0,0,1635,1636,1,0,0,0,1636,1638,3, - 110,55,0,1637,1639,5,186,0,0,1638,1637,1,0,0,0,1638,1639,1,0,0,0,1639, - 1640,1,0,0,0,1640,1641,5,3,0,0,1641,1643,1,0,0,0,1642,1625,1,0,0,0,1642, - 1643,1,0,0,0,1643,1644,1,0,0,0,1644,1645,5,186,0,0,1645,1646,5,87,0,0, - 1646,1647,5,186,0,0,1647,1661,3,10,5,0,1648,1650,5,186,0,0,1649,1648, - 1,0,0,0,1649,1650,1,0,0,0,1650,1651,1,0,0,0,1651,1653,5,2,0,0,1652,1654, - 5,186,0,0,1653,1652,1,0,0,0,1653,1654,1,0,0,0,1654,1655,1,0,0,0,1655, - 1657,3,24,12,0,1656,1658,5,186,0,0,1657,1656,1,0,0,0,1657,1658,1,0,0, - 0,1658,1659,1,0,0,0,1659,1660,5,3,0,0,1660,1662,1,0,0,0,1661,1649,1,0, - 0,0,1661,1662,1,0,0,0,1662,1667,1,0,0,0,1663,1665,5,186,0,0,1664,1663, - 1,0,0,0,1664,1665,1,0,0,0,1665,1666,1,0,0,0,1666,1668,3,216,108,0,1667, - 1664,1,0,0,0,1667,1668,1,0,0,0,1668,171,1,0,0,0,1669,1670,3,346,173,0, - 1670,1671,5,186,0,0,1671,1672,5,51,0,0,1672,1673,5,186,0,0,1673,1675, - 1,0,0,0,1674,1669,1,0,0,0,1674,1675,1,0,0,0,1675,1676,1,0,0,0,1676,1677, - 3,346,173,0,1677,173,1,0,0,0,1678,1689,3,172,86,0,1679,1681,5,186,0,0, - 1680,1679,1,0,0,0,1680,1681,1,0,0,0,1681,1682,1,0,0,0,1682,1684,5,4,0, - 0,1683,1685,5,186,0,0,1684,1683,1,0,0,0,1684,1685,1,0,0,0,1685,1686,1, - 0,0,0,1686,1688,3,172,86,0,1687,1680,1,0,0,0,1688,1691,1,0,0,0,1689,1687, - 1,0,0,0,1689,1690,1,0,0,0,1690,175,1,0,0,0,1691,1689,1,0,0,0,1692,1693, - 5,57,0,0,1693,1694,5,186,0,0,1694,1699,3,326,163,0,1695,1697,5,186,0, - 0,1696,1695,1,0,0,0,1696,1697,1,0,0,0,1697,1698,1,0,0,0,1698,1700,3,216, - 108,0,1699,1696,1,0,0,0,1699,1700,1,0,0,0,1700,1707,1,0,0,0,1701,1703, - 5,186,0,0,1702,1701,1,0,0,0,1702,1703,1,0,0,0,1703,1704,1,0,0,0,1704, - 1705,5,158,0,0,1705,1706,5,186,0,0,1706,1708,3,174,87,0,1707,1702,1,0, - 0,0,1707,1708,1,0,0,0,1708,177,1,0,0,0,1709,1710,5,121,0,0,1710,1712, - 5,186,0,0,1711,1709,1,0,0,0,1711,1712,1,0,0,0,1712,1713,1,0,0,0,1713, - 1715,5,108,0,0,1714,1716,5,186,0,0,1715,1714,1,0,0,0,1715,1716,1,0,0, - 0,1716,1717,1,0,0,0,1717,1720,3,218,109,0,1718,1719,5,186,0,0,1719,1721, - 3,216,108,0,1720,1718,1,0,0,0,1720,1721,1,0,0,0,1721,1724,1,0,0,0,1722, - 1723,5,186,0,0,1723,1725,3,180,90,0,1724,1722,1,0,0,0,1724,1725,1,0,0, - 0,1725,179,1,0,0,0,1726,1727,5,94,0,0,1727,1728,5,186,0,0,1728,1729,3, - 182,91,0,1729,181,1,0,0,0,1730,1731,6,91,-1,0,1731,1733,5,2,0,0,1732, - 1734,5,186,0,0,1733,1732,1,0,0,0,1733,1734,1,0,0,0,1734,1735,1,0,0,0, - 1735,1737,3,182,91,0,1736,1738,5,186,0,0,1737,1736,1,0,0,0,1737,1738, - 1,0,0,0,1738,1739,1,0,0,0,1739,1740,5,3,0,0,1740,1743,1,0,0,0,1741,1743, - 3,360,180,0,1742,1730,1,0,0,0,1742,1741,1,0,0,0,1743,1760,1,0,0,0,1744, - 1745,10,4,0,0,1745,1746,5,186,0,0,1746,1747,5,102,0,0,1747,1748,5,186, - 0,0,1748,1759,3,182,91,5,1749,1754,10,3,0,0,1750,1751,5,186,0,0,1751, - 1752,5,112,0,0,1752,1753,5,186,0,0,1753,1755,3,360,180,0,1754,1750,1, - 0,0,0,1755,1756,1,0,0,0,1756,1754,1,0,0,0,1756,1757,1,0,0,0,1757,1759, - 1,0,0,0,1758,1744,1,0,0,0,1758,1749,1,0,0,0,1759,1762,1,0,0,0,1760,1758, - 1,0,0,0,1760,1761,1,0,0,0,1761,183,1,0,0,0,1762,1760,1,0,0,0,1763,1765, - 5,147,0,0,1764,1766,5,186,0,0,1765,1764,1,0,0,0,1765,1766,1,0,0,0,1766, - 1767,1,0,0,0,1767,1768,3,258,129,0,1768,1769,5,186,0,0,1769,1770,5,51, - 0,0,1770,1771,5,186,0,0,1771,1772,3,346,173,0,1772,185,1,0,0,0,1773,1775, - 5,68,0,0,1774,1776,5,186,0,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776, - 1777,1,0,0,0,1777,1778,3,218,109,0,1778,187,1,0,0,0,1779,1781,5,110,0, - 0,1780,1782,5,186,0,0,1781,1780,1,0,0,0,1781,1782,1,0,0,0,1782,1783,1, - 0,0,0,1783,1788,3,218,109,0,1784,1785,5,186,0,0,1785,1787,3,190,95,0, - 1786,1784,1,0,0,0,1787,1790,1,0,0,0,1788,1786,1,0,0,0,1788,1789,1,0,0, - 0,1789,189,1,0,0,0,1790,1788,1,0,0,0,1791,1792,5,118,0,0,1792,1793,5, - 186,0,0,1793,1794,5,108,0,0,1794,1795,5,186,0,0,1795,1802,3,192,96,0, - 1796,1797,5,118,0,0,1797,1798,5,186,0,0,1798,1799,5,68,0,0,1799,1800, - 5,186,0,0,1800,1802,3,192,96,0,1801,1791,1,0,0,0,1801,1796,1,0,0,0,1802, - 191,1,0,0,0,1803,1805,5,134,0,0,1804,1806,5,186,0,0,1805,1804,1,0,0,0, - 1805,1806,1,0,0,0,1806,1807,1,0,0,0,1807,1818,3,194,97,0,1808,1810,5, - 186,0,0,1809,1808,1,0,0,0,1809,1810,1,0,0,0,1810,1811,1,0,0,0,1811,1813, - 5,4,0,0,1812,1814,5,186,0,0,1813,1812,1,0,0,0,1813,1814,1,0,0,0,1814, - 1815,1,0,0,0,1815,1817,3,194,97,0,1816,1809,1,0,0,0,1817,1820,1,0,0,0, - 1818,1816,1,0,0,0,1818,1819,1,0,0,0,1819,1836,1,0,0,0,1820,1818,1,0,0, - 0,1821,1823,5,134,0,0,1822,1824,5,186,0,0,1823,1822,1,0,0,0,1823,1824, - 1,0,0,0,1824,1825,1,0,0,0,1825,1827,3,304,152,0,1826,1828,5,186,0,0,1827, - 1826,1,0,0,0,1827,1828,1,0,0,0,1828,1829,1,0,0,0,1829,1831,5,6,0,0,1830, - 1832,5,186,0,0,1831,1830,1,0,0,0,1831,1832,1,0,0,0,1832,1833,1,0,0,0, - 1833,1834,3,234,117,0,1834,1836,1,0,0,0,1835,1803,1,0,0,0,1835,1821,1, - 0,0,0,1836,193,1,0,0,0,1837,1839,3,352,176,0,1838,1840,5,186,0,0,1839, - 1838,1,0,0,0,1839,1840,1,0,0,0,1840,1841,1,0,0,0,1841,1843,5,6,0,0,1842, - 1844,5,186,0,0,1843,1842,1,0,0,0,1843,1844,1,0,0,0,1844,1845,1,0,0,0, - 1845,1846,3,258,129,0,1846,195,1,0,0,0,1847,1848,5,76,0,0,1848,1850,5, - 186,0,0,1849,1847,1,0,0,0,1849,1850,1,0,0,0,1850,1851,1,0,0,0,1851,1853, - 5,73,0,0,1852,1854,5,186,0,0,1853,1852,1,0,0,0,1853,1854,1,0,0,0,1854, - 1855,1,0,0,0,1855,1866,3,258,129,0,1856,1858,5,186,0,0,1857,1856,1,0, - 0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1861,5,4,0,0,1860,1862,5, - 186,0,0,1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1863,1,0,0,0,1863,1865, - 3,258,129,0,1864,1857,1,0,0,0,1865,1868,1,0,0,0,1866,1864,1,0,0,0,1866, - 1867,1,0,0,0,1867,197,1,0,0,0,1868,1866,1,0,0,0,1869,1870,5,153,0,0,1870, - 1875,3,202,101,0,1871,1873,5,186,0,0,1872,1871,1,0,0,0,1872,1873,1,0, - 0,0,1873,1874,1,0,0,0,1874,1876,3,216,108,0,1875,1872,1,0,0,0,1875,1876, - 1,0,0,0,1876,199,1,0,0,0,1877,1878,5,130,0,0,1878,1879,3,202,101,0,1879, - 201,1,0,0,0,1880,1882,5,186,0,0,1881,1880,1,0,0,0,1881,1882,1,0,0,0,1882, - 1883,1,0,0,0,1883,1885,5,77,0,0,1884,1881,1,0,0,0,1884,1885,1,0,0,0,1885, - 1886,1,0,0,0,1886,1887,5,186,0,0,1887,1890,3,204,102,0,1888,1889,5,186, - 0,0,1889,1891,3,208,104,0,1890,1888,1,0,0,0,1890,1891,1,0,0,0,1891,1894, - 1,0,0,0,1892,1893,5,186,0,0,1893,1895,3,210,105,0,1894,1892,1,0,0,0,1894, - 1895,1,0,0,0,1895,1898,1,0,0,0,1896,1897,5,186,0,0,1897,1899,3,212,106, - 0,1898,1896,1,0,0,0,1898,1899,1,0,0,0,1899,203,1,0,0,0,1900,1911,5,164, - 0,0,1901,1903,5,186,0,0,1902,1901,1,0,0,0,1902,1903,1,0,0,0,1903,1904, - 1,0,0,0,1904,1906,5,4,0,0,1905,1907,5,186,0,0,1906,1905,1,0,0,0,1906, - 1907,1,0,0,0,1907,1908,1,0,0,0,1908,1910,3,206,103,0,1909,1902,1,0,0, - 0,1910,1913,1,0,0,0,1911,1909,1,0,0,0,1911,1912,1,0,0,0,1912,1929,1,0, - 0,0,1913,1911,1,0,0,0,1914,1925,3,206,103,0,1915,1917,5,186,0,0,1916, - 1915,1,0,0,0,1916,1917,1,0,0,0,1917,1918,1,0,0,0,1918,1920,5,4,0,0,1919, - 1921,5,186,0,0,1920,1919,1,0,0,0,1920,1921,1,0,0,0,1921,1922,1,0,0,0, - 1922,1924,3,206,103,0,1923,1916,1,0,0,0,1924,1927,1,0,0,0,1925,1923,1, - 0,0,0,1925,1926,1,0,0,0,1926,1929,1,0,0,0,1927,1925,1,0,0,0,1928,1900, - 1,0,0,0,1928,1914,1,0,0,0,1929,205,1,0,0,0,1930,1931,3,258,129,0,1931, - 1932,5,186,0,0,1932,1933,5,51,0,0,1933,1934,5,186,0,0,1934,1935,3,346, - 173,0,1935,1938,1,0,0,0,1936,1938,3,258,129,0,1937,1930,1,0,0,0,1937, - 1936,1,0,0,0,1938,207,1,0,0,0,1939,1940,5,123,0,0,1940,1941,5,186,0,0, - 1941,1942,5,56,0,0,1942,1943,5,186,0,0,1943,1951,3,214,107,0,1944,1946, - 5,4,0,0,1945,1947,5,186,0,0,1946,1945,1,0,0,0,1946,1947,1,0,0,0,1947, - 1948,1,0,0,0,1948,1950,3,214,107,0,1949,1944,1,0,0,0,1950,1953,1,0,0, - 0,1951,1949,1,0,0,0,1951,1952,1,0,0,0,1952,209,1,0,0,0,1953,1951,1,0, - 0,0,1954,1955,5,165,0,0,1955,1956,5,186,0,0,1956,1957,3,258,129,0,1957, - 211,1,0,0,0,1958,1959,5,104,0,0,1959,1960,5,186,0,0,1960,1961,3,258,129, - 0,1961,213,1,0,0,0,1962,1967,3,258,129,0,1963,1965,5,186,0,0,1964,1963, - 1,0,0,0,1964,1965,1,0,0,0,1965,1966,1,0,0,0,1966,1968,7,1,0,0,1967,1964, - 1,0,0,0,1967,1968,1,0,0,0,1968,215,1,0,0,0,1969,1970,5,152,0,0,1970,1971, - 5,186,0,0,1971,1972,3,258,129,0,1972,217,1,0,0,0,1973,1984,3,220,110, - 0,1974,1976,5,186,0,0,1975,1974,1,0,0,0,1975,1976,1,0,0,0,1976,1977,1, - 0,0,0,1977,1979,5,4,0,0,1978,1980,5,186,0,0,1979,1978,1,0,0,0,1979,1980, - 1,0,0,0,1980,1981,1,0,0,0,1981,1983,3,220,110,0,1982,1975,1,0,0,0,1983, - 1986,1,0,0,0,1984,1982,1,0,0,0,1984,1985,1,0,0,0,1985,219,1,0,0,0,1986, - 1984,1,0,0,0,1987,1989,3,346,173,0,1988,1990,5,186,0,0,1989,1988,1,0, - 0,0,1989,1990,1,0,0,0,1990,1991,1,0,0,0,1991,1993,5,6,0,0,1992,1994,5, - 186,0,0,1993,1992,1,0,0,0,1993,1994,1,0,0,0,1994,1995,1,0,0,0,1995,1996, - 3,222,111,0,1996,1999,1,0,0,0,1997,1999,3,222,111,0,1998,1987,1,0,0,0, - 1998,1997,1,0,0,0,1999,221,1,0,0,0,2000,2001,3,224,112,0,2001,223,1,0, - 0,0,2002,2009,3,226,113,0,2003,2005,5,186,0,0,2004,2003,1,0,0,0,2004, - 2005,1,0,0,0,2005,2006,1,0,0,0,2006,2008,3,228,114,0,2007,2004,1,0,0, - 0,2008,2011,1,0,0,0,2009,2007,1,0,0,0,2009,2010,1,0,0,0,2010,2017,1,0, - 0,0,2011,2009,1,0,0,0,2012,2013,5,2,0,0,2013,2014,3,224,112,0,2014,2015, - 5,3,0,0,2015,2017,1,0,0,0,2016,2002,1,0,0,0,2016,2012,1,0,0,0,2017,225, - 1,0,0,0,2018,2020,5,2,0,0,2019,2021,5,186,0,0,2020,2019,1,0,0,0,2020, - 2021,1,0,0,0,2021,2026,1,0,0,0,2022,2024,3,346,173,0,2023,2025,5,186, - 0,0,2024,2023,1,0,0,0,2024,2025,1,0,0,0,2025,2027,1,0,0,0,2026,2022,1, - 0,0,0,2026,2027,1,0,0,0,2027,2032,1,0,0,0,2028,2030,3,238,119,0,2029, - 2031,5,186,0,0,2030,2029,1,0,0,0,2030,2031,1,0,0,0,2031,2033,1,0,0,0, - 2032,2028,1,0,0,0,2032,2033,1,0,0,0,2033,2038,1,0,0,0,2034,2036,3,234, - 117,0,2035,2037,5,186,0,0,2036,2035,1,0,0,0,2036,2037,1,0,0,0,2037,2039, - 1,0,0,0,2038,2034,1,0,0,0,2038,2039,1,0,0,0,2039,2040,1,0,0,0,2040,2041, - 5,3,0,0,2041,227,1,0,0,0,2042,2044,3,230,115,0,2043,2045,5,186,0,0,2044, - 2043,1,0,0,0,2044,2045,1,0,0,0,2045,2046,1,0,0,0,2046,2047,3,226,113, - 0,2047,229,1,0,0,0,2048,2050,3,366,183,0,2049,2051,5,186,0,0,2050,2049, - 1,0,0,0,2050,2051,1,0,0,0,2051,2052,1,0,0,0,2052,2054,3,370,185,0,2053, - 2055,5,186,0,0,2054,2053,1,0,0,0,2054,2055,1,0,0,0,2055,2057,1,0,0,0, - 2056,2058,3,232,116,0,2057,2056,1,0,0,0,2057,2058,1,0,0,0,2058,2060,1, - 0,0,0,2059,2061,5,186,0,0,2060,2059,1,0,0,0,2060,2061,1,0,0,0,2061,2062, - 1,0,0,0,2062,2063,3,370,185,0,2063,2093,1,0,0,0,2064,2066,3,370,185,0, - 2065,2067,5,186,0,0,2066,2065,1,0,0,0,2066,2067,1,0,0,0,2067,2069,1,0, - 0,0,2068,2070,3,232,116,0,2069,2068,1,0,0,0,2069,2070,1,0,0,0,2070,2072, - 1,0,0,0,2071,2073,5,186,0,0,2072,2071,1,0,0,0,2072,2073,1,0,0,0,2073, - 2074,1,0,0,0,2074,2076,3,370,185,0,2075,2077,5,186,0,0,2076,2075,1,0, - 0,0,2076,2077,1,0,0,0,2077,2078,1,0,0,0,2078,2079,3,368,184,0,2079,2093, - 1,0,0,0,2080,2082,3,370,185,0,2081,2083,5,186,0,0,2082,2081,1,0,0,0,2082, - 2083,1,0,0,0,2083,2085,1,0,0,0,2084,2086,3,232,116,0,2085,2084,1,0,0, - 0,2085,2086,1,0,0,0,2086,2088,1,0,0,0,2087,2089,5,186,0,0,2088,2087,1, - 0,0,0,2088,2089,1,0,0,0,2089,2090,1,0,0,0,2090,2091,3,370,185,0,2091, - 2093,1,0,0,0,2092,2048,1,0,0,0,2092,2064,1,0,0,0,2092,2080,1,0,0,0,2093, - 231,1,0,0,0,2094,2096,5,7,0,0,2095,2097,5,186,0,0,2096,2095,1,0,0,0,2096, - 2097,1,0,0,0,2097,2102,1,0,0,0,2098,2100,3,346,173,0,2099,2101,5,186, - 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,2108,1,0,0,0,2104,2106,3,236,118,0,2105, - 2107,5,186,0,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107,2109,1,0,0,0, - 2108,2104,1,0,0,0,2108,2109,1,0,0,0,2109,2114,1,0,0,0,2110,2112,3,240, - 120,0,2111,2113,5,186,0,0,2112,2111,1,0,0,0,2112,2113,1,0,0,0,2113,2115, - 1,0,0,0,2114,2110,1,0,0,0,2114,2115,1,0,0,0,2115,2120,1,0,0,0,2116,2118, - 3,234,117,0,2117,2119,5,186,0,0,2118,2117,1,0,0,0,2118,2119,1,0,0,0,2119, - 2121,1,0,0,0,2120,2116,1,0,0,0,2120,2121,1,0,0,0,2121,2122,1,0,0,0,2122, - 2123,5,8,0,0,2123,233,1,0,0,0,2124,2126,5,9,0,0,2125,2127,5,186,0,0,2126, - 2125,1,0,0,0,2126,2127,1,0,0,0,2127,2161,1,0,0,0,2128,2130,3,354,177, - 0,2129,2131,5,186,0,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2132,1, - 0,0,0,2132,2134,5,167,0,0,2133,2135,5,186,0,0,2134,2133,1,0,0,0,2134, - 2135,1,0,0,0,2135,2136,1,0,0,0,2136,2138,3,258,129,0,2137,2139,5,186, - 0,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139,2158,1,0,0,0,2140,2142,5, - 4,0,0,2141,2143,5,186,0,0,2142,2141,1,0,0,0,2142,2143,1,0,0,0,2143,2144, - 1,0,0,0,2144,2146,3,354,177,0,2145,2147,5,186,0,0,2146,2145,1,0,0,0,2146, - 2147,1,0,0,0,2147,2148,1,0,0,0,2148,2150,5,167,0,0,2149,2151,5,186,0, - 0,2150,2149,1,0,0,0,2150,2151,1,0,0,0,2151,2152,1,0,0,0,2152,2154,3,258, - 129,0,2153,2155,5,186,0,0,2154,2153,1,0,0,0,2154,2155,1,0,0,0,2155,2157, - 1,0,0,0,2156,2140,1,0,0,0,2157,2160,1,0,0,0,2158,2156,1,0,0,0,2158,2159, - 1,0,0,0,2159,2162,1,0,0,0,2160,2158,1,0,0,0,2161,2128,1,0,0,0,2161,2162, - 1,0,0,0,2162,2163,1,0,0,0,2163,2164,5,10,0,0,2164,235,1,0,0,0,2165,2167, - 5,167,0,0,2166,2168,5,186,0,0,2167,2166,1,0,0,0,2167,2168,1,0,0,0,2168, - 2169,1,0,0,0,2169,2183,3,256,128,0,2170,2172,5,186,0,0,2171,2170,1,0, - 0,0,2171,2172,1,0,0,0,2172,2173,1,0,0,0,2173,2175,5,11,0,0,2174,2176, - 5,167,0,0,2175,2174,1,0,0,0,2175,2176,1,0,0,0,2176,2178,1,0,0,0,2177, - 2179,5,186,0,0,2178,2177,1,0,0,0,2178,2179,1,0,0,0,2179,2180,1,0,0,0, - 2180,2182,3,256,128,0,2181,2171,1,0,0,0,2182,2185,1,0,0,0,2183,2181,1, - 0,0,0,2183,2184,1,0,0,0,2184,237,1,0,0,0,2185,2183,1,0,0,0,2186,2188, - 5,167,0,0,2187,2189,5,186,0,0,2188,2187,1,0,0,0,2188,2189,1,0,0,0,2189, - 2190,1,0,0,0,2190,2207,3,254,127,0,2191,2193,5,186,0,0,2192,2191,1,0, - 0,0,2192,2193,1,0,0,0,2193,2199,1,0,0,0,2194,2196,5,11,0,0,2195,2197, - 5,167,0,0,2196,2195,1,0,0,0,2196,2197,1,0,0,0,2197,2200,1,0,0,0,2198, - 2200,5,167,0,0,2199,2194,1,0,0,0,2199,2198,1,0,0,0,2200,2202,1,0,0,0, - 2201,2203,5,186,0,0,2202,2201,1,0,0,0,2202,2203,1,0,0,0,2203,2204,1,0, - 0,0,2204,2206,3,254,127,0,2205,2192,1,0,0,0,2206,2209,1,0,0,0,2207,2205, - 1,0,0,0,2207,2208,1,0,0,0,2208,239,1,0,0,0,2209,2207,1,0,0,0,2210,2215, - 5,164,0,0,2211,2213,5,186,0,0,2212,2211,1,0,0,0,2212,2213,1,0,0,0,2213, - 2214,1,0,0,0,2214,2216,3,242,121,0,2215,2212,1,0,0,0,2215,2216,1,0,0, - 0,2216,2221,1,0,0,0,2217,2219,5,186,0,0,2218,2217,1,0,0,0,2218,2219,1, - 0,0,0,2219,2220,1,0,0,0,2220,2222,3,244,122,0,2221,2218,1,0,0,0,2221, - 2222,1,0,0,0,2222,2227,1,0,0,0,2223,2225,5,186,0,0,2224,2223,1,0,0,0, - 2224,2225,1,0,0,0,2225,2226,1,0,0,0,2226,2228,3,246,123,0,2227,2224,1, - 0,0,0,2227,2228,1,0,0,0,2228,241,1,0,0,0,2229,2230,5,48,0,0,2230,2232, - 5,186,0,0,2231,2229,1,0,0,0,2231,2232,1,0,0,0,2232,2233,1,0,0,0,2233, - 2235,5,155,0,0,2234,2236,5,186,0,0,2235,2234,1,0,0,0,2235,2236,1,0,0, - 0,2236,2237,1,0,0,0,2237,2239,5,2,0,0,2238,2240,5,186,0,0,2239,2238,1, - 0,0,0,2239,2240,1,0,0,0,2240,2241,1,0,0,0,2241,2243,3,354,177,0,2242, - 2244,5,186,0,0,2243,2242,1,0,0,0,2243,2244,1,0,0,0,2244,2245,1,0,0,0, - 2245,2246,5,3,0,0,2246,2254,1,0,0,0,2247,2254,5,135,0,0,2248,2249,5,48, - 0,0,2249,2250,5,186,0,0,2250,2254,5,135,0,0,2251,2254,5,142,0,0,2252, - 2254,5,45,0,0,2253,2231,1,0,0,0,2253,2247,1,0,0,0,2253,2248,1,0,0,0,2253, - 2251,1,0,0,0,2253,2252,1,0,0,0,2254,243,1,0,0,0,2255,2257,3,250,125,0, - 2256,2255,1,0,0,0,2256,2257,1,0,0,0,2257,2259,1,0,0,0,2258,2260,5,186, - 0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2261,1,0,0,0,2261,2263,5, - 168,0,0,2262,2264,5,186,0,0,2263,2262,1,0,0,0,2263,2264,1,0,0,0,2264, - 2266,1,0,0,0,2265,2267,3,252,126,0,2266,2265,1,0,0,0,2266,2267,1,0,0, - 0,2267,2270,1,0,0,0,2268,2270,3,356,178,0,2269,2256,1,0,0,0,2269,2268, - 1,0,0,0,2270,245,1,0,0,0,2271,2273,5,2,0,0,2272,2274,5,186,0,0,2273,2272, - 1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,0,0,2275,2277,3,346,173,0,2276, - 2278,5,186,0,0,2277,2276,1,0,0,0,2277,2278,1,0,0,0,2278,2279,1,0,0,0, - 2279,2281,5,4,0,0,2280,2282,5,186,0,0,2281,2280,1,0,0,0,2281,2282,1,0, - 0,0,2282,2283,1,0,0,0,2283,2295,3,346,173,0,2284,2286,5,186,0,0,2285, - 2284,1,0,0,0,2285,2286,1,0,0,0,2286,2287,1,0,0,0,2287,2289,5,11,0,0,2288, - 2290,5,186,0,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2291,1,0,0,0, - 2291,2293,3,216,108,0,2292,2294,5,186,0,0,2293,2292,1,0,0,0,2293,2294, - 1,0,0,0,2294,2296,1,0,0,0,2295,2285,1,0,0,0,2295,2296,1,0,0,0,2296,2316, - 1,0,0,0,2297,2299,5,186,0,0,2298,2297,1,0,0,0,2298,2299,1,0,0,0,2299, - 2300,1,0,0,0,2300,2302,5,11,0,0,2301,2303,5,186,0,0,2302,2301,1,0,0,0, - 2302,2303,1,0,0,0,2303,2304,1,0,0,0,2304,2306,3,248,124,0,2305,2307,5, - 186,0,0,2306,2305,1,0,0,0,2306,2307,1,0,0,0,2307,2308,1,0,0,0,2308,2310, - 5,4,0,0,2309,2311,5,186,0,0,2310,2309,1,0,0,0,2310,2311,1,0,0,0,2311, - 2312,1,0,0,0,2312,2314,3,248,124,0,2313,2315,5,186,0,0,2314,2313,1,0, - 0,0,2314,2315,1,0,0,0,2315,2317,1,0,0,0,2316,2298,1,0,0,0,2316,2317,1, - 0,0,0,2317,2318,1,0,0,0,2318,2319,5,3,0,0,2319,247,1,0,0,0,2320,2322, - 5,9,0,0,2321,2323,5,186,0,0,2322,2321,1,0,0,0,2322,2323,1,0,0,0,2323, - 2325,1,0,0,0,2324,2326,3,204,102,0,2325,2324,1,0,0,0,2325,2326,1,0,0, - 0,2326,2328,1,0,0,0,2327,2329,5,186,0,0,2328,2327,1,0,0,0,2328,2329,1, - 0,0,0,2329,2330,1,0,0,0,2330,2331,5,10,0,0,2331,249,1,0,0,0,2332,2333, - 5,173,0,0,2333,251,1,0,0,0,2334,2335,5,173,0,0,2335,253,1,0,0,0,2336, - 2339,3,360,180,0,2337,2338,5,5,0,0,2338,2340,3,360,180,0,2339,2337,1, - 0,0,0,2339,2340,1,0,0,0,2340,255,1,0,0,0,2341,2342,3,360,180,0,2342,257, - 1,0,0,0,2343,2344,3,260,130,0,2344,259,1,0,0,0,2345,2352,3,262,131,0, - 2346,2347,5,186,0,0,2347,2348,5,122,0,0,2348,2349,5,186,0,0,2349,2351, - 3,262,131,0,2350,2346,1,0,0,0,2351,2354,1,0,0,0,2352,2350,1,0,0,0,2352, - 2353,1,0,0,0,2353,261,1,0,0,0,2354,2352,1,0,0,0,2355,2362,3,264,132,0, - 2356,2357,5,186,0,0,2357,2358,5,156,0,0,2358,2359,5,186,0,0,2359,2361, - 3,264,132,0,2360,2356,1,0,0,0,2361,2364,1,0,0,0,2362,2360,1,0,0,0,2362, - 2363,1,0,0,0,2363,263,1,0,0,0,2364,2362,1,0,0,0,2365,2372,3,266,133,0, - 2366,2367,5,186,0,0,2367,2368,5,50,0,0,2368,2369,5,186,0,0,2369,2371, - 3,266,133,0,2370,2366,1,0,0,0,2371,2374,1,0,0,0,2372,2370,1,0,0,0,2372, - 2373,1,0,0,0,2373,265,1,0,0,0,2374,2372,1,0,0,0,2375,2377,5,115,0,0,2376, - 2378,5,186,0,0,2377,2376,1,0,0,0,2377,2378,1,0,0,0,2378,2380,1,0,0,0, - 2379,2375,1,0,0,0,2380,2383,1,0,0,0,2381,2379,1,0,0,0,2381,2382,1,0,0, - 0,2382,2384,1,0,0,0,2383,2381,1,0,0,0,2384,2385,3,268,134,0,2385,267, - 1,0,0,0,2386,2396,3,272,136,0,2387,2389,5,186,0,0,2388,2387,1,0,0,0,2388, - 2389,1,0,0,0,2389,2390,1,0,0,0,2390,2392,3,270,135,0,2391,2393,5,186, - 0,0,2392,2391,1,0,0,0,2392,2393,1,0,0,0,2393,2394,1,0,0,0,2394,2395,3, - 272,136,0,2395,2397,1,0,0,0,2396,2388,1,0,0,0,2396,2397,1,0,0,0,2397, - 2435,1,0,0,0,2398,2400,3,272,136,0,2399,2401,5,186,0,0,2400,2399,1,0, - 0,0,2400,2401,1,0,0,0,2401,2402,1,0,0,0,2402,2404,5,166,0,0,2403,2405, - 5,186,0,0,2404,2403,1,0,0,0,2404,2405,1,0,0,0,2405,2406,1,0,0,0,2406, - 2407,3,272,136,0,2407,2408,1,0,0,0,2408,2409,6,134,-1,0,2409,2435,1,0, - 0,0,2410,2412,3,272,136,0,2411,2413,5,186,0,0,2412,2411,1,0,0,0,2412, - 2413,1,0,0,0,2413,2414,1,0,0,0,2414,2416,3,270,135,0,2415,2417,5,186, - 0,0,2416,2415,1,0,0,0,2416,2417,1,0,0,0,2417,2418,1,0,0,0,2418,2428,3, - 272,136,0,2419,2421,5,186,0,0,2420,2419,1,0,0,0,2420,2421,1,0,0,0,2421, - 2422,1,0,0,0,2422,2424,3,270,135,0,2423,2425,5,186,0,0,2424,2423,1,0, - 0,0,2424,2425,1,0,0,0,2425,2426,1,0,0,0,2426,2427,3,272,136,0,2427,2429, - 1,0,0,0,2428,2420,1,0,0,0,2429,2430,1,0,0,0,2430,2428,1,0,0,0,2430,2431, - 1,0,0,0,2431,2432,1,0,0,0,2432,2433,6,134,-1,0,2433,2435,1,0,0,0,2434, - 2386,1,0,0,0,2434,2398,1,0,0,0,2434,2410,1,0,0,0,2435,269,1,0,0,0,2436, - 2437,7,2,0,0,2437,271,1,0,0,0,2438,2449,3,274,137,0,2439,2441,5,186,0, - 0,2440,2439,1,0,0,0,2440,2441,1,0,0,0,2441,2442,1,0,0,0,2442,2444,5,11, - 0,0,2443,2445,5,186,0,0,2444,2443,1,0,0,0,2444,2445,1,0,0,0,2445,2446, - 1,0,0,0,2446,2448,3,274,137,0,2447,2440,1,0,0,0,2448,2451,1,0,0,0,2449, - 2447,1,0,0,0,2449,2450,1,0,0,0,2450,273,1,0,0,0,2451,2449,1,0,0,0,2452, - 2463,3,276,138,0,2453,2455,5,186,0,0,2454,2453,1,0,0,0,2454,2455,1,0, - 0,0,2455,2456,1,0,0,0,2456,2458,5,17,0,0,2457,2459,5,186,0,0,2458,2457, - 1,0,0,0,2458,2459,1,0,0,0,2459,2460,1,0,0,0,2460,2462,3,276,138,0,2461, - 2454,1,0,0,0,2462,2465,1,0,0,0,2463,2461,1,0,0,0,2463,2464,1,0,0,0,2464, - 275,1,0,0,0,2465,2463,1,0,0,0,2466,2478,3,280,140,0,2467,2469,5,186,0, - 0,2468,2467,1,0,0,0,2468,2469,1,0,0,0,2469,2470,1,0,0,0,2470,2472,3,278, - 139,0,2471,2473,5,186,0,0,2472,2471,1,0,0,0,2472,2473,1,0,0,0,2473,2474, - 1,0,0,0,2474,2475,3,280,140,0,2475,2477,1,0,0,0,2476,2468,1,0,0,0,2477, - 2480,1,0,0,0,2478,2476,1,0,0,0,2478,2479,1,0,0,0,2479,277,1,0,0,0,2480, - 2478,1,0,0,0,2481,2482,7,3,0,0,2482,279,1,0,0,0,2483,2495,3,284,142,0, - 2484,2486,5,186,0,0,2485,2484,1,0,0,0,2485,2486,1,0,0,0,2486,2487,1,0, - 0,0,2487,2489,3,282,141,0,2488,2490,5,186,0,0,2489,2488,1,0,0,0,2489, - 2490,1,0,0,0,2490,2491,1,0,0,0,2491,2492,3,284,142,0,2492,2494,1,0,0, - 0,2493,2485,1,0,0,0,2494,2497,1,0,0,0,2495,2493,1,0,0,0,2495,2496,1,0, - 0,0,2496,281,1,0,0,0,2497,2495,1,0,0,0,2498,2499,7,4,0,0,2499,283,1,0, - 0,0,2500,2512,3,288,144,0,2501,2503,5,186,0,0,2502,2501,1,0,0,0,2502, - 2503,1,0,0,0,2503,2504,1,0,0,0,2504,2506,3,286,143,0,2505,2507,5,186, - 0,0,2506,2505,1,0,0,0,2506,2507,1,0,0,0,2507,2508,1,0,0,0,2508,2509,3, - 288,144,0,2509,2511,1,0,0,0,2510,2502,1,0,0,0,2511,2514,1,0,0,0,2512, - 2510,1,0,0,0,2512,2513,1,0,0,0,2513,285,1,0,0,0,2514,2512,1,0,0,0,2515, - 2516,7,5,0,0,2516,287,1,0,0,0,2517,2528,3,290,145,0,2518,2520,5,186,0, - 0,2519,2518,1,0,0,0,2519,2520,1,0,0,0,2520,2521,1,0,0,0,2521,2523,5,23, - 0,0,2522,2524,5,186,0,0,2523,2522,1,0,0,0,2523,2524,1,0,0,0,2524,2525, - 1,0,0,0,2525,2527,3,290,145,0,2526,2519,1,0,0,0,2527,2530,1,0,0,0,2528, - 2526,1,0,0,0,2528,2529,1,0,0,0,2529,289,1,0,0,0,2530,2528,1,0,0,0,2531, - 2539,3,300,150,0,2532,2540,3,294,147,0,2533,2535,3,292,146,0,2534,2533, - 1,0,0,0,2535,2536,1,0,0,0,2536,2534,1,0,0,0,2536,2537,1,0,0,0,2537,2540, - 1,0,0,0,2538,2540,3,298,149,0,2539,2532,1,0,0,0,2539,2534,1,0,0,0,2539, - 2538,1,0,0,0,2539,2540,1,0,0,0,2540,291,1,0,0,0,2541,2542,5,186,0,0,2542, - 2544,5,98,0,0,2543,2545,5,186,0,0,2544,2543,1,0,0,0,2544,2545,1,0,0,0, - 2545,2546,1,0,0,0,2546,2561,3,302,151,0,2547,2548,5,7,0,0,2548,2549,3, - 258,129,0,2549,2550,5,8,0,0,2550,2561,1,0,0,0,2551,2553,5,7,0,0,2552, - 2554,3,258,129,0,2553,2552,1,0,0,0,2553,2554,1,0,0,0,2554,2555,1,0,0, - 0,2555,2557,7,6,0,0,2556,2558,3,258,129,0,2557,2556,1,0,0,0,2557,2558, - 1,0,0,0,2558,2559,1,0,0,0,2559,2561,5,8,0,0,2560,2541,1,0,0,0,2560,2547, - 1,0,0,0,2560,2551,1,0,0,0,2561,293,1,0,0,0,2562,2574,3,296,148,0,2563, - 2564,5,186,0,0,2564,2565,5,137,0,0,2565,2566,5,186,0,0,2566,2574,5,153, - 0,0,2567,2568,5,186,0,0,2568,2569,5,81,0,0,2569,2570,5,186,0,0,2570,2574, - 5,153,0,0,2571,2572,5,186,0,0,2572,2574,5,65,0,0,2573,2562,1,0,0,0,2573, - 2563,1,0,0,0,2573,2567,1,0,0,0,2573,2571,1,0,0,0,2574,2576,1,0,0,0,2575, - 2577,5,186,0,0,2576,2575,1,0,0,0,2576,2577,1,0,0,0,2577,2578,1,0,0,0, - 2578,2579,3,302,151,0,2579,295,1,0,0,0,2580,2582,5,186,0,0,2581,2580, - 1,0,0,0,2581,2582,1,0,0,0,2582,2583,1,0,0,0,2583,2584,5,24,0,0,2584,297, - 1,0,0,0,2585,2586,5,186,0,0,2586,2587,5,101,0,0,2587,2588,5,186,0,0,2588, - 2596,5,117,0,0,2589,2590,5,186,0,0,2590,2591,5,101,0,0,2591,2592,5,186, - 0,0,2592,2593,5,115,0,0,2593,2594,5,186,0,0,2594,2596,5,117,0,0,2595, - 2585,1,0,0,0,2595,2589,1,0,0,0,2596,299,1,0,0,0,2597,2599,5,169,0,0,2598, - 2600,5,186,0,0,2599,2598,1,0,0,0,2599,2600,1,0,0,0,2600,2602,1,0,0,0, - 2601,2597,1,0,0,0,2602,2605,1,0,0,0,2603,2601,1,0,0,0,2603,2604,1,0,0, - 0,2604,2606,1,0,0,0,2605,2603,1,0,0,0,2606,2611,3,302,151,0,2607,2609, - 5,186,0,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2610,1,0,0,0,2610, - 2612,5,170,0,0,2611,2608,1,0,0,0,2611,2612,1,0,0,0,2612,301,1,0,0,0,2613, - 2620,3,304,152,0,2614,2616,5,186,0,0,2615,2614,1,0,0,0,2615,2616,1,0, - 0,0,2616,2617,1,0,0,0,2617,2619,3,340,170,0,2618,2615,1,0,0,0,2619,2622, - 1,0,0,0,2620,2618,1,0,0,0,2620,2621,1,0,0,0,2621,303,1,0,0,0,2622,2620, - 1,0,0,0,2623,2633,3,312,156,0,2624,2633,3,350,175,0,2625,2633,3,342,171, - 0,2626,2633,3,324,162,0,2627,2633,3,326,163,0,2628,2633,3,336,168,0,2629, - 2633,3,338,169,0,2630,2633,3,346,173,0,2631,2633,3,306,153,0,2632,2623, - 1,0,0,0,2632,2624,1,0,0,0,2632,2625,1,0,0,0,2632,2626,1,0,0,0,2632,2627, - 1,0,0,0,2632,2628,1,0,0,0,2632,2629,1,0,0,0,2632,2630,1,0,0,0,2632,2631, - 1,0,0,0,2633,305,1,0,0,0,2634,2636,5,48,0,0,2635,2637,5,186,0,0,2636, - 2635,1,0,0,0,2636,2637,1,0,0,0,2637,2638,1,0,0,0,2638,2640,5,2,0,0,2639, - 2641,5,186,0,0,2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0, - 2642,2644,3,308,154,0,2643,2645,5,186,0,0,2644,2643,1,0,0,0,2644,2645, - 1,0,0,0,2645,2646,1,0,0,0,2646,2647,5,3,0,0,2647,2691,1,0,0,0,2648,2650, - 5,46,0,0,2649,2651,5,186,0,0,2650,2649,1,0,0,0,2650,2651,1,0,0,0,2651, - 2652,1,0,0,0,2652,2654,5,2,0,0,2653,2655,5,186,0,0,2654,2653,1,0,0,0, - 2654,2655,1,0,0,0,2655,2656,1,0,0,0,2656,2658,3,308,154,0,2657,2659,5, - 186,0,0,2658,2657,1,0,0,0,2658,2659,1,0,0,0,2659,2660,1,0,0,0,2660,2661, - 5,3,0,0,2661,2691,1,0,0,0,2662,2664,5,116,0,0,2663,2665,5,186,0,0,2664, - 2663,1,0,0,0,2664,2665,1,0,0,0,2665,2666,1,0,0,0,2666,2668,5,2,0,0,2667, - 2669,5,186,0,0,2668,2667,1,0,0,0,2668,2669,1,0,0,0,2669,2670,1,0,0,0, - 2670,2672,3,308,154,0,2671,2673,5,186,0,0,2672,2671,1,0,0,0,2672,2673, - 1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,3,0,0,2675,2691,1,0,0,0,2676,2678, - 5,157,0,0,2677,2679,5,186,0,0,2678,2677,1,0,0,0,2678,2679,1,0,0,0,2679, - 2680,1,0,0,0,2680,2682,5,2,0,0,2681,2683,5,186,0,0,2682,2681,1,0,0,0, - 2682,2683,1,0,0,0,2683,2684,1,0,0,0,2684,2686,3,308,154,0,2685,2687,5, - 186,0,0,2686,2685,1,0,0,0,2686,2687,1,0,0,0,2687,2688,1,0,0,0,2688,2689, - 5,3,0,0,2689,2691,1,0,0,0,2690,2634,1,0,0,0,2690,2648,1,0,0,0,2690,2662, - 1,0,0,0,2690,2676,1,0,0,0,2691,307,1,0,0,0,2692,2693,3,310,155,0,2693, - 2694,5,186,0,0,2694,2695,3,216,108,0,2695,309,1,0,0,0,2696,2697,3,346, - 173,0,2697,2698,5,186,0,0,2698,2699,5,98,0,0,2699,2700,5,186,0,0,2700, - 2701,3,258,129,0,2701,311,1,0,0,0,2702,2709,3,348,174,0,2703,2709,5,171, - 0,0,2704,2709,3,314,157,0,2705,2709,5,117,0,0,2706,2709,3,316,158,0,2707, - 2709,3,320,160,0,2708,2702,1,0,0,0,2708,2703,1,0,0,0,2708,2704,1,0,0, - 0,2708,2705,1,0,0,0,2708,2706,1,0,0,0,2708,2707,1,0,0,0,2709,313,1,0, - 0,0,2710,2711,7,7,0,0,2711,315,1,0,0,0,2712,2714,5,7,0,0,2713,2715,5, - 186,0,0,2714,2713,1,0,0,0,2714,2715,1,0,0,0,2715,2729,1,0,0,0,2716,2718, - 3,258,129,0,2717,2719,5,186,0,0,2718,2717,1,0,0,0,2718,2719,1,0,0,0,2719, - 2726,1,0,0,0,2720,2722,3,318,159,0,2721,2723,5,186,0,0,2722,2721,1,0, - 0,0,2722,2723,1,0,0,0,2723,2725,1,0,0,0,2724,2720,1,0,0,0,2725,2728,1, - 0,0,0,2726,2724,1,0,0,0,2726,2727,1,0,0,0,2727,2730,1,0,0,0,2728,2726, - 1,0,0,0,2729,2716,1,0,0,0,2729,2730,1,0,0,0,2730,2731,1,0,0,0,2731,2732, - 5,8,0,0,2732,317,1,0,0,0,2733,2735,5,4,0,0,2734,2736,5,186,0,0,2735,2734, - 1,0,0,0,2735,2736,1,0,0,0,2736,2738,1,0,0,0,2737,2739,3,258,129,0,2738, - 2737,1,0,0,0,2738,2739,1,0,0,0,2739,319,1,0,0,0,2740,2742,5,9,0,0,2741, - 2743,5,186,0,0,2742,2741,1,0,0,0,2742,2743,1,0,0,0,2743,2744,1,0,0,0, - 2744,2746,3,322,161,0,2745,2747,5,186,0,0,2746,2745,1,0,0,0,2746,2747, - 1,0,0,0,2747,2758,1,0,0,0,2748,2750,5,4,0,0,2749,2751,5,186,0,0,2750, - 2749,1,0,0,0,2750,2751,1,0,0,0,2751,2752,1,0,0,0,2752,2754,3,322,161, - 0,2753,2755,5,186,0,0,2754,2753,1,0,0,0,2754,2755,1,0,0,0,2755,2757,1, - 0,0,0,2756,2748,1,0,0,0,2757,2760,1,0,0,0,2758,2756,1,0,0,0,2758,2759, - 1,0,0,0,2759,2761,1,0,0,0,2760,2758,1,0,0,0,2761,2762,5,10,0,0,2762,321, - 1,0,0,0,2763,2766,3,362,181,0,2764,2766,5,171,0,0,2765,2763,1,0,0,0,2765, - 2764,1,0,0,0,2766,2768,1,0,0,0,2767,2769,5,186,0,0,2768,2767,1,0,0,0, - 2768,2769,1,0,0,0,2769,2770,1,0,0,0,2770,2772,5,167,0,0,2771,2773,5,186, - 0,0,2772,2771,1,0,0,0,2772,2773,1,0,0,0,2773,2774,1,0,0,0,2774,2775,3, - 258,129,0,2775,323,1,0,0,0,2776,2778,5,2,0,0,2777,2779,5,186,0,0,2778, - 2777,1,0,0,0,2778,2779,1,0,0,0,2779,2780,1,0,0,0,2780,2782,3,258,129, - 0,2781,2783,5,186,0,0,2782,2781,1,0,0,0,2782,2783,1,0,0,0,2783,2784,1, - 0,0,0,2784,2785,5,3,0,0,2785,325,1,0,0,0,2786,2788,5,67,0,0,2787,2789, - 5,186,0,0,2788,2787,1,0,0,0,2788,2789,1,0,0,0,2789,2790,1,0,0,0,2790, - 2792,5,2,0,0,2791,2793,5,186,0,0,2792,2791,1,0,0,0,2792,2793,1,0,0,0, - 2793,2794,1,0,0,0,2794,2796,5,164,0,0,2795,2797,5,186,0,0,2796,2795,1, - 0,0,0,2796,2797,1,0,0,0,2797,2798,1,0,0,0,2798,2864,5,3,0,0,2799,2801, - 5,59,0,0,2800,2802,5,186,0,0,2801,2800,1,0,0,0,2801,2802,1,0,0,0,2802, - 2803,1,0,0,0,2803,2805,5,2,0,0,2804,2806,5,186,0,0,2805,2804,1,0,0,0, - 2805,2806,1,0,0,0,2806,2807,1,0,0,0,2807,2809,3,330,165,0,2808,2810,5, - 186,0,0,2809,2808,1,0,0,0,2809,2810,1,0,0,0,2810,2821,1,0,0,0,2811,2813, - 5,51,0,0,2812,2814,5,186,0,0,2813,2812,1,0,0,0,2813,2814,1,0,0,0,2814, - 2815,1,0,0,0,2815,2822,3,128,64,0,2816,2818,5,4,0,0,2817,2819,5,186,0, - 0,2818,2817,1,0,0,0,2818,2819,1,0,0,0,2819,2820,1,0,0,0,2820,2822,3,330, - 165,0,2821,2811,1,0,0,0,2821,2816,1,0,0,0,2822,2824,1,0,0,0,2823,2825, - 5,186,0,0,2824,2823,1,0,0,0,2824,2825,1,0,0,0,2825,2826,1,0,0,0,2826, - 2827,5,3,0,0,2827,2864,1,0,0,0,2828,2830,3,328,164,0,2829,2831,5,186, - 0,0,2830,2829,1,0,0,0,2830,2831,1,0,0,0,2831,2832,1,0,0,0,2832,2834,5, - 2,0,0,2833,2835,5,186,0,0,2834,2833,1,0,0,0,2834,2835,1,0,0,0,2835,2840, - 1,0,0,0,2836,2838,5,77,0,0,2837,2839,5,186,0,0,2838,2837,1,0,0,0,2838, - 2839,1,0,0,0,2839,2841,1,0,0,0,2840,2836,1,0,0,0,2840,2841,1,0,0,0,2841, - 2859,1,0,0,0,2842,2844,3,330,165,0,2843,2845,5,186,0,0,2844,2843,1,0, - 0,0,2844,2845,1,0,0,0,2845,2856,1,0,0,0,2846,2848,5,4,0,0,2847,2849,5, - 186,0,0,2848,2847,1,0,0,0,2848,2849,1,0,0,0,2849,2850,1,0,0,0,2850,2852, - 3,330,165,0,2851,2853,5,186,0,0,2852,2851,1,0,0,0,2852,2853,1,0,0,0,2853, - 2855,1,0,0,0,2854,2846,1,0,0,0,2855,2858,1,0,0,0,2856,2854,1,0,0,0,2856, - 2857,1,0,0,0,2857,2860,1,0,0,0,2858,2856,1,0,0,0,2859,2842,1,0,0,0,2859, - 2860,1,0,0,0,2860,2861,1,0,0,0,2861,2862,5,3,0,0,2862,2864,1,0,0,0,2863, - 2786,1,0,0,0,2863,2799,1,0,0,0,2863,2828,1,0,0,0,2864,327,1,0,0,0,2865, - 2866,3,362,181,0,2866,329,1,0,0,0,2867,2869,3,362,181,0,2868,2870,5,186, - 0,0,2869,2868,1,0,0,0,2869,2870,1,0,0,0,2870,2871,1,0,0,0,2871,2872,5, - 167,0,0,2872,2874,5,6,0,0,2873,2875,5,186,0,0,2874,2873,1,0,0,0,2874, - 2875,1,0,0,0,2875,2877,1,0,0,0,2876,2867,1,0,0,0,2876,2877,1,0,0,0,2877, - 2878,1,0,0,0,2878,2881,3,258,129,0,2879,2881,3,332,166,0,2880,2876,1, - 0,0,0,2880,2879,1,0,0,0,2881,331,1,0,0,0,2882,2884,3,334,167,0,2883,2885, - 5,186,0,0,2884,2883,1,0,0,0,2884,2885,1,0,0,0,2885,2886,1,0,0,0,2886, - 2887,5,169,0,0,2887,2889,5,15,0,0,2888,2890,5,186,0,0,2889,2888,1,0,0, - 0,2889,2890,1,0,0,0,2890,2891,1,0,0,0,2891,2893,3,258,129,0,2892,2894, - 5,186,0,0,2893,2892,1,0,0,0,2893,2894,1,0,0,0,2894,333,1,0,0,0,2895,2920, - 3,362,181,0,2896,2898,5,2,0,0,2897,2899,5,186,0,0,2898,2897,1,0,0,0,2898, - 2899,1,0,0,0,2899,2900,1,0,0,0,2900,2902,3,362,181,0,2901,2903,5,186, - 0,0,2902,2901,1,0,0,0,2902,2903,1,0,0,0,2903,2914,1,0,0,0,2904,2906,5, - 4,0,0,2905,2907,5,186,0,0,2906,2905,1,0,0,0,2906,2907,1,0,0,0,2907,2908, - 1,0,0,0,2908,2910,3,362,181,0,2909,2911,5,186,0,0,2910,2909,1,0,0,0,2910, - 2911,1,0,0,0,2911,2913,1,0,0,0,2912,2904,1,0,0,0,2913,2916,1,0,0,0,2914, - 2912,1,0,0,0,2914,2915,1,0,0,0,2915,2917,1,0,0,0,2916,2914,1,0,0,0,2917, - 2918,5,3,0,0,2918,2920,1,0,0,0,2919,2895,1,0,0,0,2919,2896,1,0,0,0,2920, - 335,1,0,0,0,2921,2926,3,226,113,0,2922,2924,5,186,0,0,2923,2922,1,0,0, - 0,2923,2924,1,0,0,0,2924,2925,1,0,0,0,2925,2927,3,228,114,0,2926,2923, - 1,0,0,0,2927,2928,1,0,0,0,2928,2926,1,0,0,0,2928,2929,1,0,0,0,2929,337, - 1,0,0,0,2930,2932,7,8,0,0,2931,2933,5,186,0,0,2932,2931,1,0,0,0,2932, - 2933,1,0,0,0,2933,2934,1,0,0,0,2934,2936,5,9,0,0,2935,2937,5,186,0,0, - 2936,2935,1,0,0,0,2936,2937,1,0,0,0,2937,2938,1,0,0,0,2938,2940,5,108, - 0,0,2939,2941,5,186,0,0,2940,2939,1,0,0,0,2940,2941,1,0,0,0,2941,2942, - 1,0,0,0,2942,2947,3,218,109,0,2943,2945,5,186,0,0,2944,2943,1,0,0,0,2944, - 2945,1,0,0,0,2945,2946,1,0,0,0,2946,2948,3,216,108,0,2947,2944,1,0,0, - 0,2947,2948,1,0,0,0,2948,2953,1,0,0,0,2949,2951,5,186,0,0,2950,2949,1, - 0,0,0,2950,2951,1,0,0,0,2951,2952,1,0,0,0,2952,2954,3,180,90,0,2953,2950, - 1,0,0,0,2953,2954,1,0,0,0,2954,2956,1,0,0,0,2955,2957,5,186,0,0,2956, - 2955,1,0,0,0,2956,2957,1,0,0,0,2957,2958,1,0,0,0,2958,2959,5,10,0,0,2959, - 339,1,0,0,0,2960,2962,5,5,0,0,2961,2963,5,186,0,0,2962,2961,1,0,0,0,2962, - 2963,1,0,0,0,2963,2966,1,0,0,0,2964,2967,3,354,177,0,2965,2967,5,164, - 0,0,2966,2964,1,0,0,0,2966,2965,1,0,0,0,2967,341,1,0,0,0,2968,2973,5, - 58,0,0,2969,2971,5,186,0,0,2970,2969,1,0,0,0,2970,2971,1,0,0,0,2971,2972, - 1,0,0,0,2972,2974,3,344,172,0,2973,2970,1,0,0,0,2974,2975,1,0,0,0,2975, - 2973,1,0,0,0,2975,2976,1,0,0,0,2976,2991,1,0,0,0,2977,2979,5,58,0,0,2978, - 2980,5,186,0,0,2979,2978,1,0,0,0,2979,2980,1,0,0,0,2980,2981,1,0,0,0, - 2981,2986,3,258,129,0,2982,2984,5,186,0,0,2983,2982,1,0,0,0,2983,2984, - 1,0,0,0,2984,2985,1,0,0,0,2985,2987,3,344,172,0,2986,2983,1,0,0,0,2987, - 2988,1,0,0,0,2988,2986,1,0,0,0,2988,2989,1,0,0,0,2989,2991,1,0,0,0,2990, - 2968,1,0,0,0,2990,2977,1,0,0,0,2991,3000,1,0,0,0,2992,2994,5,186,0,0, - 2993,2992,1,0,0,0,2993,2994,1,0,0,0,2994,2995,1,0,0,0,2995,2997,5,79, - 0,0,2996,2998,5,186,0,0,2997,2996,1,0,0,0,2997,2998,1,0,0,0,2998,2999, - 1,0,0,0,2999,3001,3,258,129,0,3000,2993,1,0,0,0,3000,3001,1,0,0,0,3001, - 3003,1,0,0,0,3002,3004,5,186,0,0,3003,3002,1,0,0,0,3003,3004,1,0,0,0, - 3004,3005,1,0,0,0,3005,3006,5,80,0,0,3006,343,1,0,0,0,3007,3009,5,151, - 0,0,3008,3010,5,186,0,0,3009,3008,1,0,0,0,3009,3010,1,0,0,0,3010,3011, - 1,0,0,0,3011,3013,3,258,129,0,3012,3014,5,186,0,0,3013,3012,1,0,0,0,3013, - 3014,1,0,0,0,3014,3015,1,0,0,0,3015,3017,5,140,0,0,3016,3018,5,186,0, - 0,3017,3016,1,0,0,0,3017,3018,1,0,0,0,3018,3019,1,0,0,0,3019,3020,3,258, - 129,0,3020,345,1,0,0,0,3021,3022,3,362,181,0,3022,347,1,0,0,0,3023,3026, - 3,358,179,0,3024,3026,3,356,178,0,3025,3023,1,0,0,0,3025,3024,1,0,0,0, - 3026,349,1,0,0,0,3027,3030,5,25,0,0,3028,3031,3,362,181,0,3029,3031,5, - 173,0,0,3030,3028,1,0,0,0,3030,3029,1,0,0,0,3031,351,1,0,0,0,3032,3034, - 3,304,152,0,3033,3035,5,186,0,0,3034,3033,1,0,0,0,3034,3035,1,0,0,0,3035, - 3036,1,0,0,0,3036,3037,3,340,170,0,3037,353,1,0,0,0,3038,3039,3,362,181, - 0,3039,355,1,0,0,0,3040,3041,5,173,0,0,3041,357,1,0,0,0,3042,3043,7,9, - 0,0,3043,359,1,0,0,0,3044,3047,3,362,181,0,3045,3046,5,5,0,0,3046,3048, - 3,362,181,0,3047,3045,1,0,0,0,3047,3048,1,0,0,0,3048,361,1,0,0,0,3049, - 3055,5,182,0,0,3050,3051,5,185,0,0,3051,3055,6,181,-1,0,3052,3055,5,174, - 0,0,3053,3055,3,364,182,0,3054,3049,1,0,0,0,3054,3050,1,0,0,0,3054,3052, - 1,0,0,0,3054,3053,1,0,0,0,3055,363,1,0,0,0,3056,3057,7,10,0,0,3057,365, - 1,0,0,0,3058,3059,7,11,0,0,3059,367,1,0,0,0,3060,3061,7,12,0,0,3061,369, - 1,0,0,0,3062,3063,7,13,0,0,3063,371,1,0,0,0,524,374,378,383,387,392,395, - 399,402,429,435,442,446,450,454,457,461,465,469,474,478,480,487,491,500, - 505,515,519,523,528,541,545,553,557,561,565,573,577,581,585,600,605,611, - 615,618,621,627,631,636,639,644,648,652,657,675,687,691,698,718,722,725, - 728,731,734,738,743,747,757,761,766,771,776,782,786,790,795,802,806,810, - 813,830,834,838,842,846,849,852,860,865,869,873,877,886,890,895,899,903, - 907,911,913,917,921,923,931,936,940,944,948,953,959,963,976,980,983,986, - 989,993,997,1000,1003,1007,1011,1017,1021,1025,1029,1035,1039,1043,1047, - 1053,1057,1062,1080,1087,1100,1107,1123,1127,1136,1144,1147,1157,1160, - 1168,1171,1177,1180,1186,1201,1219,1226,1233,1244,1267,1276,1282,1286, - 1291,1300,1304,1309,1315,1321,1327,1331,1335,1341,1345,1349,1355,1359, - 1363,1369,1373,1377,1381,1385,1391,1395,1399,1403,1407,1417,1423,1430, - 1435,1441,1446,1463,1469,1475,1479,1483,1492,1506,1511,1516,1520,1525, - 1531,1536,1539,1543,1547,1551,1557,1561,1566,1571,1575,1578,1580,1584, - 1588,1594,1598,1603,1607,1616,1622,1630,1634,1638,1642,1649,1653,1657, - 1661,1664,1667,1674,1680,1684,1689,1696,1699,1702,1707,1711,1715,1720, - 1724,1733,1737,1742,1756,1758,1760,1765,1775,1781,1788,1801,1805,1809, - 1813,1818,1823,1827,1831,1835,1839,1843,1849,1853,1857,1861,1866,1872, - 1875,1881,1884,1890,1894,1898,1902,1906,1911,1916,1920,1925,1928,1937, - 1946,1951,1964,1967,1975,1979,1984,1989,1993,1998,2004,2009,2016,2020, - 2024,2026,2030,2032,2036,2038,2044,2050,2054,2057,2060,2066,2069,2072, - 2076,2082,2085,2088,2092,2096,2100,2102,2106,2108,2112,2114,2118,2120, - 2126,2130,2134,2138,2142,2146,2150,2154,2158,2161,2167,2171,2175,2178, - 2183,2188,2192,2196,2199,2202,2207,2212,2215,2218,2221,2224,2227,2231, - 2235,2239,2243,2253,2256,2259,2263,2266,2269,2273,2277,2281,2285,2289, - 2293,2295,2298,2302,2306,2310,2314,2316,2322,2325,2328,2339,2352,2362, - 2372,2377,2381,2388,2392,2396,2400,2404,2412,2416,2420,2424,2430,2434, - 2440,2444,2449,2454,2458,2463,2468,2472,2478,2485,2489,2495,2502,2506, - 2512,2519,2523,2528,2536,2539,2544,2553,2557,2560,2573,2576,2581,2595, - 2599,2603,2608,2611,2615,2620,2632,2636,2640,2644,2650,2654,2658,2664, - 2668,2672,2678,2682,2686,2690,2708,2714,2718,2722,2726,2729,2735,2738, - 2742,2746,2750,2754,2758,2765,2768,2772,2778,2782,2788,2792,2796,2801, - 2805,2809,2813,2818,2821,2824,2830,2834,2838,2840,2844,2848,2852,2856, - 2859,2863,2869,2874,2876,2880,2884,2889,2893,2898,2902,2906,2910,2914, - 2919,2923,2928,2932,2936,2940,2944,2947,2950,2953,2956,2962,2966,2970, - 2975,2979,2983,2988,2990,2993,2997,3000,3003,3009,3013,3017,3025,3030, - 3034,3047,3054 + 7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,1,0, + 1,0,3,0,379,8,0,1,0,1,0,3,0,383,8,0,1,0,5,0,386,8,0,10,0,12,0,389,9,0, + 1,0,3,0,392,8,0,1,0,1,0,1,1,3,1,397,8,1,1,1,3,1,400,8,1,1,1,1,1,3,1,404, + 8,1,1,1,3,1,407,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,1, + 2,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,434,8,2,1,3,1,3, + 1,3,1,3,3,3,440,8,3,1,3,1,3,1,3,1,3,1,3,3,3,447,8,3,1,3,1,3,3,3,451,8, + 3,1,3,1,3,3,3,455,8,3,1,3,1,3,3,3,459,8,3,1,4,3,4,462,8,4,1,4,1,4,3,4, + 466,8,4,1,4,1,4,3,4,470,8,4,1,4,1,4,3,4,474,8,4,1,4,5,4,477,8,4,10,4, + 12,4,480,9,4,1,4,3,4,483,8,4,3,4,485,8,4,1,4,1,4,1,5,1,5,1,5,3,5,492, + 8,5,1,5,1,5,3,5,496,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,505,8,5,1,5,1, + 5,1,5,3,5,510,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,520,8,6,1,6,1,6, + 3,6,524,8,6,1,6,1,6,3,6,528,8,6,1,6,5,6,531,8,6,10,6,12,6,534,9,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,546,8,7,1,7,1,7,3,7,550,8,7,1, + 7,1,7,1,7,1,7,1,7,1,7,3,7,558,8,7,1,7,1,7,3,7,562,8,7,1,7,1,7,3,7,566, + 8,7,1,7,1,7,3,7,570,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,578,8,8,1,8,1,8,3, + 8,582,8,8,1,8,1,8,3,8,586,8,8,1,8,1,8,3,8,590,8,8,1,9,1,9,1,9,1,9,1,9, + 1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,605,8,10,1,10,1,10,1,10,3, + 10,610,8,10,1,10,1,10,1,10,1,10,3,10,616,8,10,1,10,1,10,3,10,620,8,10, + 1,10,3,10,623,8,10,1,10,3,10,626,8,10,1,10,1,10,1,11,1,11,3,11,632,8, + 11,1,11,1,11,3,11,636,8,11,1,11,5,11,639,8,11,10,11,12,11,642,9,11,3, + 11,644,8,11,1,11,1,11,1,11,3,11,649,8,11,1,12,1,12,3,12,653,8,12,1,12, + 1,12,3,12,657,8,12,1,12,5,12,660,8,12,10,12,12,12,663,9,12,1,13,1,13, + 1,13,1,13,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15, + 680,8,15,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,3,17,692,8, + 17,1,17,1,17,3,17,696,8,17,1,17,1,17,1,17,1,17,1,17,3,17,703,8,17,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19, + 1,19,1,19,1,19,3,19,723,8,19,1,19,1,19,3,19,727,8,19,1,19,3,19,730,8, + 19,1,19,3,19,733,8,19,1,19,3,19,736,8,19,1,19,3,19,739,8,19,1,19,1,19, + 3,19,743,8,19,1,19,5,19,746,8,19,10,19,12,19,749,9,19,1,19,3,19,752,8, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,3,20,762,8,20,1,20,1,20,3, + 20,766,8,20,1,20,5,20,769,8,20,10,20,12,20,772,9,20,1,21,1,21,3,21,776, + 8,21,1,21,1,21,1,21,3,21,781,8,21,1,21,1,21,1,22,1,22,3,22,787,8,22,1, + 22,1,22,3,22,791,8,22,1,22,1,22,3,22,795,8,22,1,22,5,22,798,8,22,10,22, + 12,22,801,9,22,1,22,1,22,1,22,1,22,3,22,807,8,22,1,22,1,22,3,22,811,8, + 22,1,22,1,22,3,22,815,8,22,1,22,3,22,818,8,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,24,3,24,835,8,24,1,24, + 1,24,3,24,839,8,24,1,24,1,24,3,24,843,8,24,1,24,1,24,3,24,847,8,24,1, + 24,1,24,3,24,851,8,24,1,24,3,24,854,8,24,1,24,3,24,857,8,24,1,24,1,24, + 1,24,1,24,1,24,1,24,3,24,865,8,24,1,24,1,24,1,24,3,24,870,8,24,1,24,1, + 24,3,24,874,8,24,1,24,1,24,3,24,878,8,24,1,24,1,24,3,24,882,8,24,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,3,25,891,8,25,1,25,1,25,3,25,895,8,25,1, + 25,1,25,1,25,3,25,900,8,25,1,25,1,25,3,25,904,8,25,1,25,1,25,3,25,908, + 8,25,1,25,1,25,3,25,912,8,25,1,25,1,25,3,25,916,8,25,3,25,918,8,25,1, + 25,1,25,3,25,922,8,25,1,25,1,25,3,25,926,8,25,3,25,928,8,25,1,25,1,25, + 1,25,1,25,1,25,1,25,3,25,936,8,25,1,25,1,25,1,25,3,25,941,8,25,1,25,1, + 25,3,25,945,8,25,1,25,1,25,3,25,949,8,25,1,25,1,25,3,25,953,8,25,1,26, + 1,26,1,26,3,26,958,8,26,1,26,1,26,1,26,1,26,3,26,964,8,26,1,26,1,26,3, + 26,968,8,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3, + 26,981,8,26,1,26,1,26,3,26,985,8,26,1,26,3,26,988,8,26,1,26,3,26,991, + 8,26,1,26,3,26,994,8,26,1,27,1,27,3,27,998,8,27,1,28,1,28,3,28,1002,8, + 28,1,28,3,28,1005,8,28,1,28,3,28,1008,8,28,1,28,1,28,3,28,1012,8,28,1, + 28,1,28,3,28,1016,8,28,1,28,1,28,1,29,1,29,3,29,1022,8,29,1,29,1,29,3, + 29,1026,8,29,1,29,1,29,3,29,1030,8,29,1,29,1,29,3,29,1034,8,29,1,29,1, + 29,1,30,1,30,3,30,1040,8,30,1,30,1,30,3,30,1044,8,30,1,30,1,30,3,30,1048, + 8,30,1,30,1,30,3,30,1052,8,30,1,30,1,30,1,31,1,31,3,31,1058,8,31,1,31, + 1,31,3,31,1062,8,31,1,31,5,31,1065,8,31,10,31,12,31,1068,9,31,1,32,1, + 32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,3,32,1079,8,32,1,33,1,33,3,33,1083, + 8,33,1,33,1,33,3,33,1087,8,33,1,33,5,33,1090,8,33,10,33,12,33,1093,9, + 33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1, + 35,1,35,3,35,1110,8,35,1,35,1,35,1,35,5,35,1115,8,35,10,35,12,35,1118, + 9,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1130,8,36, + 1,37,1,37,1,37,1,37,1,37,3,37,1137,8,37,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,1153,8,39,1,39,1,39,3,39, + 1157,8,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1166,8,40,1,40,1,40, + 1,41,1,41,1,41,1,41,3,41,1174,8,41,1,41,3,41,1177,8,41,1,41,1,41,1,42, + 1,42,1,42,1,42,1,42,1,42,3,42,1187,8,42,1,42,3,42,1190,8,42,1,43,1,43, + 1,43,1,43,1,43,1,43,3,43,1198,8,43,1,43,3,43,1201,8,43,1,44,1,44,1,44, + 1,44,3,44,1207,8,44,1,44,3,44,1210,8,44,1,44,1,44,1,45,1,45,3,45,1216, + 8,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47, + 3,47,1231,8,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49, + 1,49,1,49,1,49,1,49,1,49,3,49,1249,8,49,1,50,1,50,1,50,1,50,1,50,3,50, + 1256,8,50,1,50,1,50,1,50,1,50,1,50,3,50,1263,8,50,1,51,1,51,1,51,1,51, + 1,52,1,52,1,52,1,52,1,52,3,52,1274,8,52,1,52,1,52,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,55,1,55,1,55,1,55, + 1,55,3,55,1297,8,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,3,56,1306,8,56, + 1,56,1,56,1,57,1,57,3,57,1312,8,57,1,57,1,57,3,57,1316,8,57,1,57,5,57, + 1319,8,57,10,57,12,57,1322,9,57,1,58,1,58,1,58,1,58,1,59,1,59,3,59,1330, + 8,59,1,59,1,59,3,59,1334,8,59,1,59,5,59,1337,8,59,10,59,12,59,1340,9, + 59,1,60,1,60,1,60,3,60,1345,8,60,1,60,1,60,1,60,1,60,3,60,1351,8,60,1, + 61,1,61,1,61,1,61,3,61,1357,8,61,1,61,1,61,3,61,1361,8,61,1,61,1,61,3, + 61,1365,8,61,1,61,1,61,1,62,1,62,3,62,1371,8,62,1,62,1,62,3,62,1375,8, + 62,1,62,1,62,3,62,1379,8,62,1,62,1,62,1,63,1,63,3,63,1385,8,63,1,63,1, + 63,3,63,1389,8,63,1,63,1,63,3,63,1393,8,63,1,63,1,63,1,64,1,64,3,64,1399, + 8,64,1,64,1,64,3,64,1403,8,64,1,64,1,64,3,64,1407,8,64,1,64,1,64,3,64, + 1411,8,64,1,64,1,64,3,64,1415,8,64,1,64,1,64,1,65,1,65,3,65,1421,8,65, + 1,65,1,65,3,65,1425,8,65,1,65,1,65,3,65,1429,8,65,1,65,1,65,3,65,1433, + 8,65,1,65,1,65,3,65,1437,8,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66, + 3,66,1447,8,66,1,66,1,66,5,66,1451,8,66,10,66,12,66,1454,9,66,1,67,1, + 67,5,67,1458,8,67,10,67,12,67,1461,9,67,1,68,1,68,3,68,1465,8,68,1,68, + 1,68,1,69,1,69,3,69,1471,8,69,1,70,1,70,1,70,3,70,1476,8,70,1,71,1,71, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72, + 1493,8,72,1,73,1,73,1,73,1,73,3,73,1499,8,73,1,74,1,74,1,74,1,74,3,74, + 1505,8,74,1,74,1,74,3,74,1509,8,74,1,75,1,75,3,75,1513,8,75,1,75,1,75, + 1,75,1,75,1,75,1,75,1,75,3,75,1522,8,75,1,76,1,76,1,76,1,76,1,77,1,77, + 1,77,1,77,1,78,1,78,1,79,1,79,3,79,1536,8,79,1,79,5,79,1539,8,79,10,79, + 12,79,1542,9,79,1,79,1,79,3,79,1546,8,79,4,79,1548,8,79,11,79,12,79,1549, + 1,79,1,79,1,79,3,79,1555,8,79,1,80,1,80,1,80,1,80,3,80,1561,8,80,1,80, + 1,80,1,80,3,80,1566,8,80,1,80,3,80,1569,8,80,1,81,1,81,3,81,1573,8,81, + 1,82,1,82,3,82,1577,8,82,5,82,1579,8,82,10,82,12,82,1582,9,82,1,82,1, + 82,1,82,3,82,1587,8,82,5,82,1589,8,82,10,82,12,82,1592,9,82,1,82,1,82, + 3,82,1596,8,82,1,82,5,82,1599,8,82,10,82,12,82,1602,9,82,1,82,3,82,1605, + 8,82,1,82,3,82,1608,8,82,3,82,1610,8,82,1,83,1,83,3,83,1614,8,83,4,83, + 1616,8,83,11,83,12,83,1617,1,83,1,83,1,84,1,84,3,84,1624,8,84,5,84,1626, + 8,84,10,84,12,84,1629,9,84,1,84,1,84,3,84,1633,8,84,5,84,1635,8,84,10, + 84,12,84,1638,9,84,1,84,1,84,1,85,1,85,1,85,1,85,3,85,1646,8,85,1,86, + 1,86,1,86,1,86,3,86,1652,8,86,1,87,1,87,1,87,1,87,1,87,1,87,3,87,1660, + 8,87,1,87,1,87,3,87,1664,8,87,1,87,1,87,3,87,1668,8,87,1,87,1,87,3,87, + 1672,8,87,1,87,1,87,1,87,1,87,1,87,3,87,1679,8,87,1,87,1,87,3,87,1683, + 8,87,1,87,1,87,3,87,1687,8,87,1,87,1,87,3,87,1691,8,87,1,87,3,87,1694, + 8,87,1,87,3,87,1697,8,87,1,88,1,88,1,88,1,88,1,88,3,88,1704,8,88,1,88, + 1,88,1,89,1,89,3,89,1710,8,89,1,89,1,89,3,89,1714,8,89,1,89,5,89,1717, + 8,89,10,89,12,89,1720,9,89,1,90,1,90,1,90,1,90,3,90,1726,8,90,1,90,3, + 90,1729,8,90,1,90,3,90,1732,8,90,1,90,1,90,1,90,3,90,1737,8,90,1,91,1, + 91,3,91,1741,8,91,1,91,1,91,3,91,1745,8,91,1,91,1,91,1,91,3,91,1750,8, + 91,1,91,1,91,3,91,1754,8,91,1,92,1,92,1,92,1,92,1,93,1,93,1,93,3,93,1763, + 8,93,1,93,1,93,3,93,1767,8,93,1,93,1,93,1,93,3,93,1772,8,93,1,93,1,93, + 1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,4,93,1784,8,93,11,93,12,93,1785, + 5,93,1788,8,93,10,93,12,93,1791,9,93,1,94,1,94,3,94,1795,8,94,1,94,1, + 94,1,94,1,94,1,94,1,94,1,95,1,95,3,95,1805,8,95,1,95,1,95,1,96,1,96,3, + 96,1811,8,96,1,96,1,96,1,96,5,96,1816,8,96,10,96,12,96,1819,9,96,1,97, + 1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,1831,8,97,1,98,1,98, + 3,98,1835,8,98,1,98,1,98,3,98,1839,8,98,1,98,1,98,3,98,1843,8,98,1,98, + 5,98,1846,8,98,10,98,12,98,1849,9,98,1,98,1,98,3,98,1853,8,98,1,98,1, + 98,3,98,1857,8,98,1,98,1,98,3,98,1861,8,98,1,98,1,98,3,98,1865,8,98,1, + 99,1,99,3,99,1869,8,99,1,99,1,99,3,99,1873,8,99,1,99,1,99,1,100,1,100, + 3,100,1879,8,100,1,100,1,100,3,100,1883,8,100,1,100,1,100,3,100,1887, + 8,100,1,100,1,100,3,100,1891,8,100,1,100,5,100,1894,8,100,10,100,12,100, + 1897,9,100,1,101,1,101,1,101,3,101,1902,8,101,1,101,3,101,1905,8,101, + 1,102,1,102,1,102,1,103,3,103,1911,8,103,1,103,3,103,1914,8,103,1,103, + 1,103,1,103,1,103,3,103,1920,8,103,1,103,1,103,3,103,1924,8,103,1,103, + 1,103,3,103,1928,8,103,1,104,1,104,3,104,1932,8,104,1,104,1,104,3,104, + 1936,8,104,1,104,5,104,1939,8,104,10,104,12,104,1942,9,104,1,104,1,104, + 3,104,1946,8,104,1,104,1,104,3,104,1950,8,104,1,104,5,104,1953,8,104, + 10,104,12,104,1956,9,104,3,104,1958,8,104,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,3,105,1967,8,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 3,106,1976,8,106,1,106,5,106,1979,8,106,10,106,12,106,1982,9,106,1,107, + 1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,109,1,109,3,109,1994,8,109, + 1,109,3,109,1997,8,109,1,110,1,110,1,110,1,110,1,111,1,111,3,111,2005, + 8,111,1,111,1,111,3,111,2009,8,111,1,111,5,111,2012,8,111,10,111,12,111, + 2015,9,111,1,112,1,112,3,112,2019,8,112,1,112,1,112,3,112,2023,8,112, + 1,112,1,112,1,112,3,112,2028,8,112,1,113,1,113,1,114,1,114,3,114,2034, + 8,114,1,114,5,114,2037,8,114,10,114,12,114,2040,9,114,1,114,1,114,1,114, + 1,114,3,114,2046,8,114,1,115,1,115,3,115,2050,8,115,1,115,1,115,3,115, + 2054,8,115,3,115,2056,8,115,1,115,1,115,3,115,2060,8,115,3,115,2062,8, + 115,1,115,1,115,3,115,2066,8,115,3,115,2068,8,115,1,115,1,115,1,116,1, + 116,3,116,2074,8,116,1,116,1,116,1,117,1,117,3,117,2080,8,117,1,117,1, + 117,3,117,2084,8,117,1,117,3,117,2087,8,117,1,117,3,117,2090,8,117,1, + 117,1,117,1,117,1,117,3,117,2096,8,117,1,117,3,117,2099,8,117,1,117,3, + 117,2102,8,117,1,117,1,117,3,117,2106,8,117,1,117,1,117,1,117,1,117,3, + 117,2112,8,117,1,117,3,117,2115,8,117,1,117,3,117,2118,8,117,1,117,1, + 117,3,117,2122,8,117,1,118,1,118,3,118,2126,8,118,1,118,1,118,3,118,2130, + 8,118,3,118,2132,8,118,1,118,1,118,3,118,2136,8,118,3,118,2138,8,118, + 1,118,1,118,3,118,2142,8,118,3,118,2144,8,118,1,118,1,118,3,118,2148, + 8,118,3,118,2150,8,118,1,118,1,118,1,119,1,119,3,119,2156,8,119,1,119, + 1,119,3,119,2160,8,119,1,119,1,119,3,119,2164,8,119,1,119,1,119,3,119, + 2168,8,119,1,119,1,119,3,119,2172,8,119,1,119,1,119,3,119,2176,8,119, + 1,119,1,119,3,119,2180,8,119,1,119,1,119,3,119,2184,8,119,5,119,2186, + 8,119,10,119,12,119,2189,9,119,3,119,2191,8,119,1,119,1,119,1,120,1,120, + 3,120,2197,8,120,1,120,1,120,3,120,2201,8,120,1,120,1,120,3,120,2205, + 8,120,1,120,3,120,2208,8,120,1,120,5,120,2211,8,120,10,120,12,120,2214, + 9,120,1,121,1,121,3,121,2218,8,121,1,121,1,121,3,121,2222,8,121,1,121, + 1,121,3,121,2226,8,121,1,121,3,121,2229,8,121,1,121,3,121,2232,8,121, + 1,121,5,121,2235,8,121,10,121,12,121,2238,9,121,1,122,1,122,3,122,2242, + 8,122,1,122,3,122,2245,8,122,1,122,3,122,2248,8,122,1,122,3,122,2251, + 8,122,1,122,3,122,2254,8,122,1,122,3,122,2257,8,122,1,123,1,123,3,123, + 2261,8,123,1,123,1,123,3,123,2265,8,123,1,123,1,123,3,123,2269,8,123, + 1,123,1,123,3,123,2273,8,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,3,123,2283,8,123,1,124,3,124,2286,8,124,1,124,3,124,2289,8,124, + 1,124,1,124,3,124,2293,8,124,1,124,3,124,2296,8,124,1,124,3,124,2299, + 8,124,1,125,1,125,3,125,2303,8,125,1,125,1,125,3,125,2307,8,125,1,125, + 1,125,3,125,2311,8,125,1,125,1,125,3,125,2315,8,125,1,125,1,125,3,125, + 2319,8,125,1,125,1,125,3,125,2323,8,125,3,125,2325,8,125,1,125,3,125, + 2328,8,125,1,125,1,125,3,125,2332,8,125,1,125,1,125,3,125,2336,8,125, + 1,125,1,125,3,125,2340,8,125,1,125,1,125,3,125,2344,8,125,3,125,2346, + 8,125,1,125,1,125,1,126,1,126,3,126,2352,8,126,1,126,3,126,2355,8,126, + 1,126,3,126,2358,8,126,1,126,1,126,1,127,1,127,1,128,1,128,1,129,1,129, + 1,129,3,129,2369,8,129,1,130,1,130,1,131,1,131,1,132,1,132,1,132,1,132, + 1,132,5,132,2380,8,132,10,132,12,132,2383,9,132,1,133,1,133,1,133,1,133, + 1,133,5,133,2390,8,133,10,133,12,133,2393,9,133,1,134,1,134,1,134,1,134, + 1,134,5,134,2400,8,134,10,134,12,134,2403,9,134,1,135,1,135,3,135,2407, + 8,135,5,135,2409,8,135,10,135,12,135,2412,9,135,1,135,1,135,1,136,1,136, + 3,136,2418,8,136,1,136,1,136,3,136,2422,8,136,1,136,1,136,3,136,2426, + 8,136,1,136,1,136,3,136,2430,8,136,1,136,1,136,3,136,2434,8,136,1,136, + 1,136,1,136,1,136,1,136,1,136,3,136,2442,8,136,1,136,1,136,3,136,2446, + 8,136,1,136,1,136,3,136,2450,8,136,1,136,1,136,3,136,2454,8,136,1,136, + 1,136,4,136,2458,8,136,11,136,12,136,2459,1,136,1,136,3,136,2464,8,136, + 1,137,1,137,1,138,1,138,3,138,2470,8,138,1,138,1,138,3,138,2474,8,138, + 1,138,5,138,2477,8,138,10,138,12,138,2480,9,138,1,139,1,139,3,139,2484, + 8,139,1,139,1,139,3,139,2488,8,139,1,139,5,139,2491,8,139,10,139,12,139, + 2494,9,139,1,140,1,140,3,140,2498,8,140,1,140,1,140,3,140,2502,8,140, + 1,140,1,140,5,140,2506,8,140,10,140,12,140,2509,9,140,1,141,1,141,1,142, + 1,142,3,142,2515,8,142,1,142,1,142,3,142,2519,8,142,1,142,1,142,5,142, + 2523,8,142,10,142,12,142,2526,9,142,1,143,1,143,1,144,1,144,3,144,2532, + 8,144,1,144,1,144,3,144,2536,8,144,1,144,1,144,5,144,2540,8,144,10,144, + 12,144,2543,9,144,1,145,1,145,1,146,1,146,3,146,2549,8,146,1,146,1,146, + 3,146,2553,8,146,1,146,5,146,2556,8,146,10,146,12,146,2559,9,146,1,147, + 1,147,1,147,4,147,2564,8,147,11,147,12,147,2565,1,147,3,147,2569,8,147, + 1,148,1,148,1,148,3,148,2574,8,148,1,148,1,148,1,148,1,148,1,148,1,148, + 1,148,3,148,2583,8,148,1,148,1,148,3,148,2587,8,148,1,148,3,148,2590, + 8,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149, + 3,149,2603,8,149,1,149,3,149,2606,8,149,1,149,1,149,1,150,3,150,2611, + 8,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151, + 1,151,3,151,2625,8,151,1,152,1,152,3,152,2629,8,152,5,152,2631,8,152, + 10,152,12,152,2634,9,152,1,152,1,152,3,152,2638,8,152,1,152,3,152,2641, + 8,152,1,153,1,153,3,153,2645,8,153,1,153,5,153,2648,8,153,10,153,12,153, + 2651,9,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154, + 2662,8,154,1,155,1,155,3,155,2666,8,155,1,155,1,155,3,155,2670,8,155, + 1,155,1,155,3,155,2674,8,155,1,155,1,155,1,155,1,155,3,155,2680,8,155, + 1,155,1,155,3,155,2684,8,155,1,155,1,155,3,155,2688,8,155,1,155,1,155, + 1,155,1,155,3,155,2694,8,155,1,155,1,155,3,155,2698,8,155,1,155,1,155, + 3,155,2702,8,155,1,155,1,155,1,155,1,155,3,155,2708,8,155,1,155,1,155, + 3,155,2712,8,155,1,155,1,155,3,155,2716,8,155,1,155,1,155,3,155,2720, + 8,155,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,158, + 1,158,1,158,1,158,1,158,1,158,3,158,2738,8,158,1,159,1,159,1,160,1,160, + 3,160,2744,8,160,1,160,1,160,3,160,2748,8,160,1,160,1,160,3,160,2752, + 8,160,5,160,2754,8,160,10,160,12,160,2757,9,160,3,160,2759,8,160,1,160, + 1,160,1,161,1,161,3,161,2765,8,161,1,161,3,161,2768,8,161,1,162,1,162, + 3,162,2772,8,162,1,162,1,162,3,162,2776,8,162,1,162,1,162,3,162,2780, + 8,162,1,162,1,162,3,162,2784,8,162,5,162,2786,8,162,10,162,12,162,2789, + 9,162,1,162,1,162,1,163,1,163,3,163,2795,8,163,1,163,3,163,2798,8,163, + 1,163,1,163,3,163,2802,8,163,1,163,1,163,1,164,1,164,3,164,2808,8,164, + 1,164,1,164,3,164,2812,8,164,1,164,1,164,1,165,1,165,3,165,2818,8,165, + 1,165,1,165,3,165,2822,8,165,1,165,1,165,3,165,2826,8,165,1,165,1,165, + 1,165,3,165,2831,8,165,1,165,1,165,3,165,2835,8,165,1,165,1,165,3,165, + 2839,8,165,1,165,1,165,3,165,2843,8,165,1,165,1,165,1,165,3,165,2848, + 8,165,1,165,3,165,2851,8,165,1,165,3,165,2854,8,165,1,165,1,165,1,165, + 1,165,3,165,2860,8,165,1,165,1,165,3,165,2864,8,165,1,165,1,165,3,165, + 2868,8,165,3,165,2870,8,165,1,165,1,165,3,165,2874,8,165,1,165,1,165, + 3,165,2878,8,165,1,165,1,165,3,165,2882,8,165,5,165,2884,8,165,10,165, + 12,165,2887,9,165,3,165,2889,8,165,1,165,1,165,3,165,2893,8,165,1,166, + 1,166,1,167,1,167,3,167,2899,8,167,1,167,1,167,1,167,3,167,2904,8,167, + 3,167,2906,8,167,1,167,1,167,3,167,2910,8,167,1,168,1,168,3,168,2914, + 8,168,1,168,1,168,1,168,3,168,2919,8,168,1,168,1,168,3,168,2923,8,168, + 1,169,1,169,1,169,3,169,2928,8,169,1,169,1,169,3,169,2932,8,169,1,169, + 1,169,3,169,2936,8,169,1,169,1,169,3,169,2940,8,169,5,169,2942,8,169, + 10,169,12,169,2945,9,169,1,169,1,169,3,169,2949,8,169,1,170,1,170,3,170, + 2953,8,170,1,170,4,170,2956,8,170,11,170,12,170,2957,1,171,1,171,3,171, + 2962,8,171,1,171,1,171,3,171,2966,8,171,1,171,1,171,3,171,2970,8,171, + 1,171,1,171,3,171,2974,8,171,1,171,3,171,2977,8,171,1,171,3,171,2980, + 8,171,1,171,3,171,2983,8,171,1,171,3,171,2986,8,171,1,171,1,171,1,172, + 1,172,3,172,2992,8,172,1,172,1,172,3,172,2996,8,172,1,173,1,173,3,173, + 3000,8,173,1,173,4,173,3003,8,173,11,173,12,173,3004,1,173,1,173,3,173, + 3009,8,173,1,173,1,173,3,173,3013,8,173,1,173,4,173,3016,8,173,11,173, + 12,173,3017,3,173,3020,8,173,1,173,3,173,3023,8,173,1,173,1,173,3,173, + 3027,8,173,1,173,3,173,3030,8,173,1,173,3,173,3033,8,173,1,173,1,173, + 1,174,1,174,3,174,3039,8,174,1,174,1,174,3,174,3043,8,174,1,174,1,174, + 3,174,3047,8,174,1,174,1,174,1,175,1,175,1,176,1,176,3,176,3055,8,176, + 1,177,1,177,1,177,3,177,3060,8,177,1,178,1,178,3,178,3064,8,178,1,178, + 1,178,1,179,1,179,1,180,1,180,1,181,1,181,1,182,1,182,1,182,3,182,3077, + 8,182,1,183,1,183,1,183,1,183,1,183,3,183,3084,8,183,1,184,1,184,1,185, + 1,185,1,186,1,186,1,187,1,187,1,187,0,2,132,186,188,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,134,136,138,140, + 142,144,146,148,150,152,154,156,158,160,162,164,166,168,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,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320, + 322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356, + 358,360,362,364,366,368,370,372,374,0,14,4,0,91,91,107,107,133,133,139, + 139,2,0,52,53,74,75,2,0,6,6,12,16,1,0,18,19,2,0,20,20,169,169,2,0,21, + 22,164,164,1,0,167,168,2,0,86,86,144,144,2,0,67,67,82,82,1,0,180,181, + 32,0,47,47,49,49,51,51,54,57,60,60,62,63,65,67,69,70,73,73,76,76,78,78, + 83,85,87,88,91,91,95,95,97,97,99,99,101,101,103,106,108,111,113,114,126, + 131,133,134,136,136,138,138,141,141,143,143,145,145,148,150,154,154,158, + 163,165,165,2,0,13,13,26,29,2,0,15,15,30,33,2,0,34,44,169,169,3506,0, + 376,1,0,0,0,2,396,1,0,0,0,4,433,1,0,0,0,6,435,1,0,0,0,8,461,1,0,0,0,10, + 509,1,0,0,0,12,511,1,0,0,0,14,541,1,0,0,0,16,571,1,0,0,0,18,591,1,0,0, + 0,20,597,1,0,0,0,22,648,1,0,0,0,24,650,1,0,0,0,26,664,1,0,0,0,28,668, + 1,0,0,0,30,672,1,0,0,0,32,681,1,0,0,0,34,702,1,0,0,0,36,704,1,0,0,0,38, + 716,1,0,0,0,40,759,1,0,0,0,42,773,1,0,0,0,44,817,1,0,0,0,46,819,1,0,0, + 0,48,825,1,0,0,0,50,883,1,0,0,0,52,954,1,0,0,0,54,997,1,0,0,0,56,999, + 1,0,0,0,58,1019,1,0,0,0,60,1037,1,0,0,0,62,1055,1,0,0,0,64,1069,1,0,0, + 0,66,1080,1,0,0,0,68,1094,1,0,0,0,70,1102,1,0,0,0,72,1119,1,0,0,0,74, + 1136,1,0,0,0,76,1138,1,0,0,0,78,1145,1,0,0,0,80,1158,1,0,0,0,82,1169, + 1,0,0,0,84,1189,1,0,0,0,86,1200,1,0,0,0,88,1202,1,0,0,0,90,1215,1,0,0, + 0,92,1219,1,0,0,0,94,1223,1,0,0,0,96,1234,1,0,0,0,98,1248,1,0,0,0,100, + 1250,1,0,0,0,102,1264,1,0,0,0,104,1268,1,0,0,0,106,1277,1,0,0,0,108,1283, + 1,0,0,0,110,1291,1,0,0,0,112,1300,1,0,0,0,114,1309,1,0,0,0,116,1323,1, + 0,0,0,118,1327,1,0,0,0,120,1341,1,0,0,0,122,1352,1,0,0,0,124,1368,1,0, + 0,0,126,1382,1,0,0,0,128,1396,1,0,0,0,130,1418,1,0,0,0,132,1446,1,0,0, + 0,134,1455,1,0,0,0,136,1462,1,0,0,0,138,1470,1,0,0,0,140,1472,1,0,0,0, + 142,1477,1,0,0,0,144,1492,1,0,0,0,146,1498,1,0,0,0,148,1500,1,0,0,0,150, + 1512,1,0,0,0,152,1523,1,0,0,0,154,1527,1,0,0,0,156,1531,1,0,0,0,158,1554, + 1,0,0,0,160,1568,1,0,0,0,162,1572,1,0,0,0,164,1609,1,0,0,0,166,1615,1, + 0,0,0,168,1627,1,0,0,0,170,1645,1,0,0,0,172,1651,1,0,0,0,174,1653,1,0, + 0,0,176,1703,1,0,0,0,178,1707,1,0,0,0,180,1721,1,0,0,0,182,1740,1,0,0, + 0,184,1755,1,0,0,0,186,1771,1,0,0,0,188,1792,1,0,0,0,190,1802,1,0,0,0, + 192,1808,1,0,0,0,194,1830,1,0,0,0,196,1864,1,0,0,0,198,1866,1,0,0,0,200, + 1878,1,0,0,0,202,1898,1,0,0,0,204,1906,1,0,0,0,206,1913,1,0,0,0,208,1957, + 1,0,0,0,210,1966,1,0,0,0,212,1968,1,0,0,0,214,1983,1,0,0,0,216,1987,1, + 0,0,0,218,1991,1,0,0,0,220,1998,1,0,0,0,222,2002,1,0,0,0,224,2027,1,0, + 0,0,226,2029,1,0,0,0,228,2045,1,0,0,0,230,2047,1,0,0,0,232,2071,1,0,0, + 0,234,2121,1,0,0,0,236,2123,1,0,0,0,238,2153,1,0,0,0,240,2194,1,0,0,0, + 242,2215,1,0,0,0,244,2239,1,0,0,0,246,2282,1,0,0,0,248,2298,1,0,0,0,250, + 2300,1,0,0,0,252,2349,1,0,0,0,254,2361,1,0,0,0,256,2363,1,0,0,0,258,2365, + 1,0,0,0,260,2370,1,0,0,0,262,2372,1,0,0,0,264,2374,1,0,0,0,266,2384,1, + 0,0,0,268,2394,1,0,0,0,270,2410,1,0,0,0,272,2463,1,0,0,0,274,2465,1,0, + 0,0,276,2467,1,0,0,0,278,2481,1,0,0,0,280,2495,1,0,0,0,282,2510,1,0,0, + 0,284,2512,1,0,0,0,286,2527,1,0,0,0,288,2529,1,0,0,0,290,2544,1,0,0,0, + 292,2546,1,0,0,0,294,2560,1,0,0,0,296,2589,1,0,0,0,298,2602,1,0,0,0,300, + 2610,1,0,0,0,302,2624,1,0,0,0,304,2632,1,0,0,0,306,2642,1,0,0,0,308,2661, + 1,0,0,0,310,2719,1,0,0,0,312,2721,1,0,0,0,314,2725,1,0,0,0,316,2737,1, + 0,0,0,318,2739,1,0,0,0,320,2741,1,0,0,0,322,2762,1,0,0,0,324,2769,1,0, + 0,0,326,2794,1,0,0,0,328,2805,1,0,0,0,330,2892,1,0,0,0,332,2894,1,0,0, + 0,334,2909,1,0,0,0,336,2911,1,0,0,0,338,2948,1,0,0,0,340,2950,1,0,0,0, + 342,2959,1,0,0,0,344,2989,1,0,0,0,346,3019,1,0,0,0,348,3036,1,0,0,0,350, + 3050,1,0,0,0,352,3054,1,0,0,0,354,3056,1,0,0,0,356,3061,1,0,0,0,358,3067, + 1,0,0,0,360,3069,1,0,0,0,362,3071,1,0,0,0,364,3073,1,0,0,0,366,3083,1, + 0,0,0,368,3085,1,0,0,0,370,3087,1,0,0,0,372,3089,1,0,0,0,374,3091,1,0, + 0,0,376,387,3,2,1,0,377,379,5,186,0,0,378,377,1,0,0,0,378,379,1,0,0,0, + 379,380,1,0,0,0,380,382,5,1,0,0,381,383,5,186,0,0,382,381,1,0,0,0,382, + 383,1,0,0,0,383,384,1,0,0,0,384,386,3,2,1,0,385,378,1,0,0,0,386,389,1, + 0,0,0,387,385,1,0,0,0,387,388,1,0,0,0,388,391,1,0,0,0,389,387,1,0,0,0, + 390,392,5,186,0,0,391,390,1,0,0,0,391,392,1,0,0,0,392,393,1,0,0,0,393, + 394,5,0,0,1,394,1,1,0,0,0,395,397,3,138,69,0,396,395,1,0,0,0,396,397, + 1,0,0,0,397,399,1,0,0,0,398,400,5,186,0,0,399,398,1,0,0,0,399,400,1,0, + 0,0,400,401,1,0,0,0,401,406,3,4,2,0,402,404,5,186,0,0,403,402,1,0,0,0, + 403,404,1,0,0,0,404,405,1,0,0,0,405,407,5,1,0,0,406,403,1,0,0,0,406,407, + 1,0,0,0,407,3,1,0,0,0,408,434,3,156,78,0,409,434,3,78,39,0,410,434,3, + 80,40,0,411,434,3,48,24,0,412,434,3,50,25,0,413,434,3,52,26,0,414,434, + 3,70,35,0,415,434,3,72,36,0,416,434,3,94,47,0,417,434,3,96,48,0,418,434, + 3,6,3,0,419,434,3,12,6,0,420,434,3,14,7,0,421,434,3,34,17,0,422,434,3, + 38,19,0,423,434,3,36,18,0,424,434,3,144,72,0,425,434,3,146,73,0,426,434, + 3,16,8,0,427,434,3,18,9,0,428,434,3,20,10,0,429,434,3,26,13,0,430,434, + 3,28,14,0,431,434,3,30,15,0,432,434,3,32,16,0,433,408,1,0,0,0,433,409, + 1,0,0,0,433,410,1,0,0,0,433,411,1,0,0,0,433,412,1,0,0,0,433,413,1,0,0, + 0,433,414,1,0,0,0,433,415,1,0,0,0,433,416,1,0,0,0,433,417,1,0,0,0,433, + 418,1,0,0,0,433,419,1,0,0,0,433,420,1,0,0,0,433,421,1,0,0,0,433,422,1, + 0,0,0,433,423,1,0,0,0,433,424,1,0,0,0,433,425,1,0,0,0,433,426,1,0,0,0, + 433,427,1,0,0,0,433,428,1,0,0,0,433,429,1,0,0,0,433,430,1,0,0,0,433,431, + 1,0,0,0,433,432,1,0,0,0,434,5,1,0,0,0,435,436,5,66,0,0,436,437,5,186, + 0,0,437,439,3,364,182,0,438,440,3,8,4,0,439,438,1,0,0,0,439,440,1,0,0, + 0,440,441,1,0,0,0,441,442,5,186,0,0,442,443,5,87,0,0,443,444,5,186,0, + 0,444,458,3,10,5,0,445,447,5,186,0,0,446,445,1,0,0,0,446,447,1,0,0,0, + 447,448,1,0,0,0,448,450,5,2,0,0,449,451,5,186,0,0,450,449,1,0,0,0,450, + 451,1,0,0,0,451,452,1,0,0,0,452,454,3,24,12,0,453,455,5,186,0,0,454,453, + 1,0,0,0,454,455,1,0,0,0,455,456,1,0,0,0,456,457,5,3,0,0,457,459,1,0,0, + 0,458,446,1,0,0,0,458,459,1,0,0,0,459,7,1,0,0,0,460,462,5,186,0,0,461, + 460,1,0,0,0,461,462,1,0,0,0,462,463,1,0,0,0,463,465,5,2,0,0,464,466,5, + 186,0,0,465,464,1,0,0,0,465,466,1,0,0,0,466,484,1,0,0,0,467,478,3,364, + 182,0,468,470,5,186,0,0,469,468,1,0,0,0,469,470,1,0,0,0,470,471,1,0,0, + 0,471,473,5,4,0,0,472,474,5,186,0,0,473,472,1,0,0,0,473,474,1,0,0,0,474, + 475,1,0,0,0,475,477,3,364,182,0,476,469,1,0,0,0,477,480,1,0,0,0,478,476, + 1,0,0,0,478,479,1,0,0,0,479,482,1,0,0,0,480,478,1,0,0,0,481,483,5,186, + 0,0,482,481,1,0,0,0,482,483,1,0,0,0,483,485,1,0,0,0,484,467,1,0,0,0,484, + 485,1,0,0,0,485,486,1,0,0,0,486,487,5,3,0,0,487,9,1,0,0,0,488,510,3,44, + 22,0,489,491,5,2,0,0,490,492,5,186,0,0,491,490,1,0,0,0,491,492,1,0,0, + 0,492,493,1,0,0,0,493,495,3,156,78,0,494,496,5,186,0,0,495,494,1,0,0, + 0,495,496,1,0,0,0,496,497,1,0,0,0,497,498,5,3,0,0,498,510,1,0,0,0,499, + 510,3,354,177,0,500,510,3,350,175,0,501,502,3,350,175,0,502,504,5,5,0, + 0,503,505,5,186,0,0,504,503,1,0,0,0,504,505,1,0,0,0,505,506,1,0,0,0,506, + 507,3,364,182,0,507,510,1,0,0,0,508,510,3,330,165,0,509,488,1,0,0,0,509, + 489,1,0,0,0,509,499,1,0,0,0,509,500,1,0,0,0,509,501,1,0,0,0,509,508,1, + 0,0,0,510,11,1,0,0,0,511,512,5,66,0,0,512,513,5,186,0,0,513,514,3,364, + 182,0,514,515,5,186,0,0,515,516,5,87,0,0,516,517,5,186,0,0,517,519,5, + 2,0,0,518,520,5,186,0,0,519,518,1,0,0,0,519,520,1,0,0,0,520,521,1,0,0, + 0,521,532,5,171,0,0,522,524,5,186,0,0,523,522,1,0,0,0,523,524,1,0,0,0, + 524,525,1,0,0,0,525,527,5,4,0,0,526,528,5,186,0,0,527,526,1,0,0,0,527, + 528,1,0,0,0,528,529,1,0,0,0,529,531,5,171,0,0,530,523,1,0,0,0,531,534, + 1,0,0,0,532,530,1,0,0,0,532,533,1,0,0,0,533,535,1,0,0,0,534,532,1,0,0, + 0,535,536,5,3,0,0,536,537,5,186,0,0,537,538,5,56,0,0,538,539,5,186,0, + 0,539,540,5,61,0,0,540,13,1,0,0,0,541,542,5,66,0,0,542,543,5,186,0,0, + 543,545,5,2,0,0,544,546,5,186,0,0,545,544,1,0,0,0,545,546,1,0,0,0,546, + 547,1,0,0,0,547,549,3,156,78,0,548,550,5,186,0,0,549,548,1,0,0,0,549, + 550,1,0,0,0,550,551,1,0,0,0,551,552,5,3,0,0,552,553,5,186,0,0,553,554, + 5,141,0,0,554,555,5,186,0,0,555,569,5,171,0,0,556,558,5,186,0,0,557,556, + 1,0,0,0,557,558,1,0,0,0,558,559,1,0,0,0,559,561,5,2,0,0,560,562,5,186, + 0,0,561,560,1,0,0,0,561,562,1,0,0,0,562,563,1,0,0,0,563,565,3,24,12,0, + 564,566,5,186,0,0,565,564,1,0,0,0,565,566,1,0,0,0,566,567,1,0,0,0,567, + 568,5,3,0,0,568,570,1,0,0,0,569,557,1,0,0,0,569,570,1,0,0,0,570,15,1, + 0,0,0,571,572,5,84,0,0,572,573,5,186,0,0,573,574,5,70,0,0,574,575,5,186, + 0,0,575,589,5,171,0,0,576,578,5,186,0,0,577,576,1,0,0,0,577,578,1,0,0, + 0,578,579,1,0,0,0,579,581,5,2,0,0,580,582,5,186,0,0,581,580,1,0,0,0,581, + 582,1,0,0,0,582,583,1,0,0,0,583,585,3,24,12,0,584,586,5,186,0,0,585,584, + 1,0,0,0,585,586,1,0,0,0,586,587,1,0,0,0,587,588,5,3,0,0,588,590,1,0,0, + 0,589,577,1,0,0,0,589,590,1,0,0,0,590,17,1,0,0,0,591,592,5,95,0,0,592, + 593,5,186,0,0,593,594,5,70,0,0,594,595,5,186,0,0,595,596,5,171,0,0,596, + 19,1,0,0,0,597,598,5,54,0,0,598,599,5,186,0,0,599,604,5,171,0,0,600,601, + 5,186,0,0,601,602,5,51,0,0,602,603,5,186,0,0,603,605,3,364,182,0,604, + 600,1,0,0,0,604,605,1,0,0,0,605,606,1,0,0,0,606,607,5,186,0,0,607,609, + 5,2,0,0,608,610,5,186,0,0,609,608,1,0,0,0,609,610,1,0,0,0,610,611,1,0, + 0,0,611,612,5,71,0,0,612,613,5,186,0,0,613,622,3,366,183,0,614,616,5, + 186,0,0,615,614,1,0,0,0,615,616,1,0,0,0,616,617,1,0,0,0,617,619,5,4,0, + 0,618,620,5,186,0,0,619,618,1,0,0,0,619,620,1,0,0,0,620,621,1,0,0,0,621, + 623,3,24,12,0,622,615,1,0,0,0,622,623,1,0,0,0,623,625,1,0,0,0,624,626, + 5,186,0,0,625,624,1,0,0,0,625,626,1,0,0,0,626,627,1,0,0,0,627,628,5,3, + 0,0,628,21,1,0,0,0,629,643,3,366,183,0,630,632,5,186,0,0,631,630,1,0, + 0,0,631,632,1,0,0,0,632,633,1,0,0,0,633,635,5,6,0,0,634,636,5,186,0,0, + 635,634,1,0,0,0,635,636,1,0,0,0,636,644,1,0,0,0,637,639,5,186,0,0,638, + 637,1,0,0,0,639,642,1,0,0,0,640,638,1,0,0,0,640,641,1,0,0,0,641,644,1, + 0,0,0,642,640,1,0,0,0,643,631,1,0,0,0,643,640,1,0,0,0,644,645,1,0,0,0, + 645,646,3,316,158,0,646,649,1,0,0,0,647,649,3,366,183,0,648,629,1,0,0, + 0,648,647,1,0,0,0,649,23,1,0,0,0,650,661,3,22,11,0,651,653,5,186,0,0, + 652,651,1,0,0,0,652,653,1,0,0,0,653,654,1,0,0,0,654,656,5,4,0,0,655,657, + 5,186,0,0,656,655,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,660,3,22, + 11,0,659,652,1,0,0,0,660,663,1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,0, + 662,25,1,0,0,0,663,661,1,0,0,0,664,665,5,76,0,0,665,666,5,186,0,0,666, + 667,3,364,182,0,667,27,1,0,0,0,668,669,5,150,0,0,669,670,5,186,0,0,670, + 671,3,364,182,0,671,29,1,0,0,0,672,673,5,68,0,0,673,674,5,186,0,0,674, + 675,5,91,0,0,675,676,5,186,0,0,676,679,3,364,182,0,677,678,5,186,0,0, + 678,680,5,46,0,0,679,677,1,0,0,0,679,680,1,0,0,0,680,31,1,0,0,0,681,682, + 5,150,0,0,682,683,5,186,0,0,683,684,5,91,0,0,684,685,5,186,0,0,685,686, + 3,364,182,0,686,33,1,0,0,0,687,688,5,57,0,0,688,689,5,186,0,0,689,691, + 3,366,183,0,690,692,5,186,0,0,691,690,1,0,0,0,691,692,1,0,0,0,692,693, + 1,0,0,0,693,695,5,6,0,0,694,696,5,186,0,0,695,694,1,0,0,0,695,696,1,0, + 0,0,696,697,1,0,0,0,697,698,3,262,131,0,698,703,1,0,0,0,699,700,5,57, + 0,0,700,701,5,186,0,0,701,703,3,330,165,0,702,687,1,0,0,0,702,699,1,0, + 0,0,703,35,1,0,0,0,704,705,5,62,0,0,705,706,5,186,0,0,706,707,5,118,0, + 0,707,708,5,186,0,0,708,709,5,139,0,0,709,710,5,186,0,0,710,711,3,364, + 182,0,711,712,5,186,0,0,712,713,5,101,0,0,713,714,5,186,0,0,714,715,5, + 171,0,0,715,37,1,0,0,0,716,717,5,68,0,0,717,718,5,186,0,0,718,719,5,107, + 0,0,719,720,5,186,0,0,720,722,3,332,166,0,721,723,5,186,0,0,722,721,1, + 0,0,0,722,723,1,0,0,0,723,724,1,0,0,0,724,726,5,2,0,0,725,727,5,186,0, + 0,726,725,1,0,0,0,726,727,1,0,0,0,727,729,1,0,0,0,728,730,3,40,20,0,729, + 728,1,0,0,0,729,730,1,0,0,0,730,732,1,0,0,0,731,733,5,186,0,0,732,731, + 1,0,0,0,732,733,1,0,0,0,733,735,1,0,0,0,734,736,3,42,21,0,735,734,1,0, + 0,0,735,736,1,0,0,0,736,747,1,0,0,0,737,739,5,186,0,0,738,737,1,0,0,0, + 738,739,1,0,0,0,739,740,1,0,0,0,740,742,5,4,0,0,741,743,5,186,0,0,742, + 741,1,0,0,0,742,743,1,0,0,0,743,744,1,0,0,0,744,746,3,42,21,0,745,738, + 1,0,0,0,746,749,1,0,0,0,747,745,1,0,0,0,747,748,1,0,0,0,748,751,1,0,0, + 0,749,747,1,0,0,0,750,752,5,186,0,0,751,750,1,0,0,0,751,752,1,0,0,0,752, + 753,1,0,0,0,753,754,5,3,0,0,754,755,5,186,0,0,755,756,5,51,0,0,756,757, + 5,186,0,0,757,758,3,262,131,0,758,39,1,0,0,0,759,770,3,366,183,0,760, + 762,5,186,0,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,765, + 5,4,0,0,764,766,5,186,0,0,765,764,1,0,0,0,765,766,1,0,0,0,766,767,1,0, + 0,0,767,769,3,366,183,0,768,761,1,0,0,0,769,772,1,0,0,0,770,768,1,0,0, + 0,770,771,1,0,0,0,771,41,1,0,0,0,772,770,1,0,0,0,773,775,3,366,183,0, + 774,776,5,186,0,0,775,774,1,0,0,0,775,776,1,0,0,0,776,777,1,0,0,0,777, + 778,5,167,0,0,778,780,5,6,0,0,779,781,5,186,0,0,780,779,1,0,0,0,780,781, + 1,0,0,0,781,782,1,0,0,0,782,783,3,316,158,0,783,43,1,0,0,0,784,786,5, + 7,0,0,785,787,5,186,0,0,786,785,1,0,0,0,786,787,1,0,0,0,787,788,1,0,0, + 0,788,799,5,171,0,0,789,791,5,186,0,0,790,789,1,0,0,0,790,791,1,0,0,0, + 791,792,1,0,0,0,792,794,5,4,0,0,793,795,5,186,0,0,794,793,1,0,0,0,794, + 795,1,0,0,0,795,796,1,0,0,0,796,798,5,171,0,0,797,790,1,0,0,0,798,801, + 1,0,0,0,799,797,1,0,0,0,799,800,1,0,0,0,800,802,1,0,0,0,801,799,1,0,0, + 0,802,818,5,8,0,0,803,818,5,171,0,0,804,806,5,90,0,0,805,807,5,186,0, + 0,806,805,1,0,0,0,806,807,1,0,0,0,807,808,1,0,0,0,808,810,5,2,0,0,809, + 811,5,186,0,0,810,809,1,0,0,0,810,811,1,0,0,0,811,812,1,0,0,0,812,814, + 5,171,0,0,813,815,5,186,0,0,814,813,1,0,0,0,814,815,1,0,0,0,815,816,1, + 0,0,0,816,818,5,3,0,0,817,784,1,0,0,0,817,803,1,0,0,0,817,804,1,0,0,0, + 818,45,1,0,0,0,819,820,5,97,0,0,820,821,5,186,0,0,821,822,5,115,0,0,822, + 823,5,186,0,0,823,824,5,82,0,0,824,47,1,0,0,0,825,826,5,68,0,0,826,827, + 5,186,0,0,827,828,5,114,0,0,828,829,5,186,0,0,829,830,5,139,0,0,830,834, + 5,186,0,0,831,832,3,46,23,0,832,833,5,186,0,0,833,835,1,0,0,0,834,831, + 1,0,0,0,834,835,1,0,0,0,835,836,1,0,0,0,836,864,3,364,182,0,837,839,5, + 186,0,0,838,837,1,0,0,0,838,839,1,0,0,0,839,840,1,0,0,0,840,842,5,2,0, + 0,841,843,5,186,0,0,842,841,1,0,0,0,842,843,1,0,0,0,843,844,1,0,0,0,844, + 846,3,118,59,0,845,847,5,186,0,0,846,845,1,0,0,0,846,847,1,0,0,0,847, + 853,1,0,0,0,848,850,5,4,0,0,849,851,5,186,0,0,850,849,1,0,0,0,850,851, + 1,0,0,0,851,852,1,0,0,0,852,854,3,122,61,0,853,848,1,0,0,0,853,854,1, + 0,0,0,854,856,1,0,0,0,855,857,5,186,0,0,856,855,1,0,0,0,856,857,1,0,0, + 0,857,858,1,0,0,0,858,859,5,3,0,0,859,865,1,0,0,0,860,861,5,186,0,0,861, + 862,5,51,0,0,862,863,5,186,0,0,863,865,3,156,78,0,864,838,1,0,0,0,864, + 860,1,0,0,0,865,881,1,0,0,0,866,867,5,186,0,0,867,869,5,153,0,0,868,870, + 5,186,0,0,869,868,1,0,0,0,869,870,1,0,0,0,870,871,1,0,0,0,871,873,5,2, + 0,0,872,874,5,186,0,0,873,872,1,0,0,0,873,874,1,0,0,0,874,875,1,0,0,0, + 875,877,3,24,12,0,876,878,5,186,0,0,877,876,1,0,0,0,877,878,1,0,0,0,878, + 879,1,0,0,0,879,880,5,3,0,0,880,882,1,0,0,0,881,866,1,0,0,0,881,882,1, + 0,0,0,882,49,1,0,0,0,883,884,5,68,0,0,884,885,5,186,0,0,885,886,5,128, + 0,0,886,887,5,186,0,0,887,890,5,139,0,0,888,889,5,186,0,0,889,891,5,92, + 0,0,890,888,1,0,0,0,890,891,1,0,0,0,891,894,1,0,0,0,892,893,5,186,0,0, + 893,895,3,46,23,0,894,892,1,0,0,0,894,895,1,0,0,0,895,896,1,0,0,0,896, + 897,5,186,0,0,897,899,3,364,182,0,898,900,5,186,0,0,899,898,1,0,0,0,899, + 900,1,0,0,0,900,901,1,0,0,0,901,903,5,2,0,0,902,904,5,186,0,0,903,902, + 1,0,0,0,903,904,1,0,0,0,904,905,1,0,0,0,905,907,3,62,31,0,906,908,5,186, + 0,0,907,906,1,0,0,0,907,908,1,0,0,0,908,935,1,0,0,0,909,911,5,4,0,0,910, + 912,5,186,0,0,911,910,1,0,0,0,911,912,1,0,0,0,912,913,1,0,0,0,913,915, + 3,118,59,0,914,916,5,186,0,0,915,914,1,0,0,0,915,916,1,0,0,0,916,918, + 1,0,0,0,917,909,1,0,0,0,917,918,1,0,0,0,918,927,1,0,0,0,919,921,5,4,0, + 0,920,922,5,186,0,0,921,920,1,0,0,0,921,922,1,0,0,0,922,923,1,0,0,0,923, + 925,3,366,183,0,924,926,5,186,0,0,925,924,1,0,0,0,925,926,1,0,0,0,926, + 928,1,0,0,0,927,919,1,0,0,0,927,928,1,0,0,0,928,929,1,0,0,0,929,936,5, + 3,0,0,930,931,5,3,0,0,931,932,5,186,0,0,932,933,5,51,0,0,933,934,5,186, + 0,0,934,936,3,156,78,0,935,917,1,0,0,0,935,930,1,0,0,0,936,952,1,0,0, + 0,937,938,5,186,0,0,938,940,5,153,0,0,939,941,5,186,0,0,940,939,1,0,0, + 0,940,941,1,0,0,0,941,942,1,0,0,0,942,944,5,2,0,0,943,945,5,186,0,0,944, + 943,1,0,0,0,944,945,1,0,0,0,945,946,1,0,0,0,946,948,3,24,12,0,947,949, + 5,186,0,0,948,947,1,0,0,0,948,949,1,0,0,0,949,950,1,0,0,0,950,951,5,3, + 0,0,951,953,1,0,0,0,952,937,1,0,0,0,952,953,1,0,0,0,953,51,1,0,0,0,954, + 957,5,68,0,0,955,956,5,186,0,0,956,958,3,366,183,0,957,955,1,0,0,0,957, + 958,1,0,0,0,958,959,1,0,0,0,959,960,5,186,0,0,960,963,5,96,0,0,961,962, + 5,186,0,0,962,964,3,364,182,0,963,961,1,0,0,0,963,964,1,0,0,0,964,967, + 1,0,0,0,965,966,5,186,0,0,966,968,3,46,23,0,967,965,1,0,0,0,967,968,1, + 0,0,0,968,969,1,0,0,0,969,970,5,186,0,0,970,971,5,89,0,0,971,972,5,186, + 0,0,972,973,3,54,27,0,973,974,5,186,0,0,974,975,5,118,0,0,975,976,5,186, + 0,0,976,993,3,60,30,0,977,978,5,186,0,0,978,980,5,120,0,0,979,981,5,186, + 0,0,980,979,1,0,0,0,980,981,1,0,0,0,981,982,1,0,0,0,982,984,5,9,0,0,983, + 985,5,186,0,0,984,983,1,0,0,0,984,985,1,0,0,0,985,987,1,0,0,0,986,988, + 3,24,12,0,987,986,1,0,0,0,987,988,1,0,0,0,988,990,1,0,0,0,989,991,5,186, + 0,0,990,989,1,0,0,0,990,991,1,0,0,0,991,992,1,0,0,0,992,994,5,10,0,0, + 993,977,1,0,0,0,993,994,1,0,0,0,994,53,1,0,0,0,995,998,3,56,28,0,996, + 998,3,58,29,0,997,995,1,0,0,0,997,996,1,0,0,0,998,55,1,0,0,0,999,1001, + 5,2,0,0,1000,1002,5,186,0,0,1001,1000,1,0,0,0,1001,1002,1,0,0,0,1002, + 1004,1,0,0,0,1003,1005,3,350,175,0,1004,1003,1,0,0,0,1004,1005,1,0,0, + 0,1005,1007,1,0,0,0,1006,1008,5,186,0,0,1007,1006,1,0,0,0,1007,1008,1, + 0,0,0,1008,1009,1,0,0,0,1009,1011,5,167,0,0,1010,1012,5,186,0,0,1011, + 1010,1,0,0,0,1011,1012,1,0,0,0,1012,1013,1,0,0,0,1013,1015,3,258,129, + 0,1014,1016,5,186,0,0,1015,1014,1,0,0,0,1015,1016,1,0,0,0,1016,1017,1, + 0,0,0,1017,1018,5,3,0,0,1018,57,1,0,0,0,1019,1021,5,2,0,0,1020,1022,5, + 186,0,0,1021,1020,1,0,0,0,1021,1022,1,0,0,0,1022,1023,1,0,0,0,1023,1025, + 5,3,0,0,1024,1026,5,186,0,0,1025,1024,1,0,0,0,1025,1026,1,0,0,0,1026, + 1027,1,0,0,0,1027,1029,3,234,117,0,1028,1030,5,186,0,0,1029,1028,1,0, + 0,0,1029,1030,1,0,0,0,1030,1031,1,0,0,0,1031,1033,5,2,0,0,1032,1034,5, + 186,0,0,1033,1032,1,0,0,0,1033,1034,1,0,0,0,1034,1035,1,0,0,0,1035,1036, + 5,3,0,0,1036,59,1,0,0,0,1037,1039,5,2,0,0,1038,1040,5,186,0,0,1039,1038, + 1,0,0,0,1039,1040,1,0,0,0,1040,1041,1,0,0,0,1041,1043,3,350,175,0,1042, + 1044,5,186,0,0,1043,1042,1,0,0,0,1043,1044,1,0,0,0,1044,1045,1,0,0,0, + 1045,1047,5,5,0,0,1046,1048,5,186,0,0,1047,1046,1,0,0,0,1047,1048,1,0, + 0,0,1048,1049,1,0,0,0,1049,1051,3,358,179,0,1050,1052,5,186,0,0,1051, + 1050,1,0,0,0,1051,1052,1,0,0,0,1052,1053,1,0,0,0,1053,1054,5,3,0,0,1054, + 61,1,0,0,0,1055,1066,3,64,32,0,1056,1058,5,186,0,0,1057,1056,1,0,0,0, + 1057,1058,1,0,0,0,1058,1059,1,0,0,0,1059,1061,5,4,0,0,1060,1062,5,186, + 0,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063,1,0,0,0,1063,1065,3, + 64,32,0,1064,1057,1,0,0,0,1065,1068,1,0,0,0,1066,1064,1,0,0,0,1066,1067, + 1,0,0,0,1067,63,1,0,0,0,1068,1066,1,0,0,0,1069,1070,5,87,0,0,1070,1071, + 5,186,0,0,1071,1072,3,364,182,0,1072,1073,5,186,0,0,1073,1074,5,141,0, + 0,1074,1075,5,186,0,0,1075,1078,3,364,182,0,1076,1077,5,186,0,0,1077, + 1079,3,366,183,0,1078,1076,1,0,0,0,1078,1079,1,0,0,0,1079,65,1,0,0,0, + 1080,1091,3,68,34,0,1081,1083,5,186,0,0,1082,1081,1,0,0,0,1082,1083,1, + 0,0,0,1083,1084,1,0,0,0,1084,1086,5,4,0,0,1085,1087,5,186,0,0,1086,1085, + 1,0,0,0,1086,1087,1,0,0,0,1087,1088,1,0,0,0,1088,1090,3,68,34,0,1089, + 1082,1,0,0,0,1090,1093,1,0,0,0,1091,1089,1,0,0,0,1091,1092,1,0,0,0,1092, + 67,1,0,0,0,1093,1091,1,0,0,0,1094,1095,5,87,0,0,1095,1096,5,186,0,0,1096, + 1097,3,364,182,0,1097,1098,5,186,0,0,1098,1099,5,141,0,0,1099,1100,5, + 186,0,0,1100,1101,3,364,182,0,1101,69,1,0,0,0,1102,1103,5,68,0,0,1103, + 1104,5,186,0,0,1104,1105,5,133,0,0,1105,1109,5,186,0,0,1106,1107,3,46, + 23,0,1107,1108,5,186,0,0,1108,1110,1,0,0,0,1109,1106,1,0,0,0,1109,1110, + 1,0,0,0,1110,1111,1,0,0,0,1111,1116,3,364,182,0,1112,1113,5,186,0,0,1113, + 1115,3,74,37,0,1114,1112,1,0,0,0,1115,1118,1,0,0,0,1116,1114,1,0,0,0, + 1116,1117,1,0,0,0,1117,71,1,0,0,0,1118,1116,1,0,0,0,1119,1120,5,68,0, + 0,1120,1121,5,186,0,0,1121,1122,5,145,0,0,1122,1123,5,186,0,0,1123,1124, + 3,364,182,0,1124,1125,5,186,0,0,1125,1126,5,51,0,0,1126,1127,5,186,0, + 0,1127,1129,3,132,66,0,1128,1130,5,186,0,0,1129,1128,1,0,0,0,1129,1130, + 1,0,0,0,1130,73,1,0,0,0,1131,1137,3,82,41,0,1132,1137,3,84,42,0,1133, + 1137,3,86,43,0,1134,1137,3,88,44,0,1135,1137,3,90,45,0,1136,1131,1,0, + 0,0,1136,1132,1,0,0,0,1136,1133,1,0,0,0,1136,1134,1,0,0,0,1136,1135,1, + 0,0,0,1137,75,1,0,0,0,1138,1139,5,186,0,0,1139,1140,5,153,0,0,1140,1141, + 5,186,0,0,1141,1142,5,160,0,0,1142,1143,5,186,0,0,1143,1144,5,171,0,0, + 1144,77,1,0,0,0,1145,1146,5,68,0,0,1146,1147,5,186,0,0,1147,1148,5,159, + 0,0,1148,1152,5,186,0,0,1149,1150,3,46,23,0,1150,1151,5,186,0,0,1151, + 1153,1,0,0,0,1152,1149,1,0,0,0,1152,1153,1,0,0,0,1153,1154,1,0,0,0,1154, + 1156,3,350,175,0,1155,1157,3,76,38,0,1156,1155,1,0,0,0,1156,1157,1,0, + 0,0,1157,79,1,0,0,0,1158,1159,5,68,0,0,1159,1160,5,186,0,0,1160,1161, + 5,161,0,0,1161,1165,5,186,0,0,1162,1163,3,46,23,0,1163,1164,5,186,0,0, + 1164,1166,1,0,0,0,1165,1162,1,0,0,0,1165,1166,1,0,0,0,1166,1167,1,0,0, + 0,1167,1168,3,350,175,0,1168,81,1,0,0,0,1169,1170,5,99,0,0,1170,1173, + 5,186,0,0,1171,1172,5,56,0,0,1172,1174,5,186,0,0,1173,1171,1,0,0,0,1173, + 1174,1,0,0,0,1174,1176,1,0,0,0,1175,1177,5,169,0,0,1176,1175,1,0,0,0, + 1176,1177,1,0,0,0,1177,1178,1,0,0,0,1178,1179,3,360,180,0,1179,83,1,0, + 0,0,1180,1181,5,113,0,0,1181,1182,5,186,0,0,1182,1190,5,111,0,0,1183, + 1184,5,111,0,0,1184,1186,5,186,0,0,1185,1187,5,169,0,0,1186,1185,1,0, + 0,0,1186,1187,1,0,0,0,1187,1188,1,0,0,0,1188,1190,3,360,180,0,1189,1180, + 1,0,0,0,1189,1183,1,0,0,0,1190,85,1,0,0,0,1191,1192,5,113,0,0,1192,1193, + 5,186,0,0,1193,1201,5,109,0,0,1194,1195,5,109,0,0,1195,1197,5,186,0,0, + 1196,1198,5,169,0,0,1197,1196,1,0,0,0,1197,1198,1,0,0,0,1198,1199,1,0, + 0,0,1199,1201,3,360,180,0,1200,1191,1,0,0,0,1200,1194,1,0,0,0,1201,87, + 1,0,0,0,1202,1203,5,136,0,0,1203,1206,5,186,0,0,1204,1205,5,153,0,0,1205, + 1207,5,186,0,0,1206,1204,1,0,0,0,1206,1207,1,0,0,0,1207,1209,1,0,0,0, + 1208,1210,5,169,0,0,1209,1208,1,0,0,0,1209,1210,1,0,0,0,1210,1211,1,0, + 0,0,1211,1212,3,360,180,0,1212,89,1,0,0,0,1213,1214,5,113,0,0,1214,1216, + 5,186,0,0,1215,1213,1,0,0,0,1215,1216,1,0,0,0,1216,1217,1,0,0,0,1217, + 1218,5,69,0,0,1218,91,1,0,0,0,1219,1220,5,97,0,0,1220,1221,5,186,0,0, + 1221,1222,5,82,0,0,1222,93,1,0,0,0,1223,1224,5,78,0,0,1224,1225,5,186, + 0,0,1225,1226,7,0,0,0,1226,1230,5,186,0,0,1227,1228,3,92,46,0,1228,1229, + 5,186,0,0,1229,1231,1,0,0,0,1230,1227,1,0,0,0,1230,1231,1,0,0,0,1231, + 1232,1,0,0,0,1232,1233,3,364,182,0,1233,95,1,0,0,0,1234,1235,5,49,0,0, + 1235,1236,5,186,0,0,1236,1237,5,139,0,0,1237,1238,5,186,0,0,1238,1239, + 3,364,182,0,1239,1240,5,186,0,0,1240,1241,3,98,49,0,1241,97,1,0,0,0,1242, + 1249,3,100,50,0,1243,1249,3,104,52,0,1244,1249,3,106,53,0,1245,1249,3, + 108,54,0,1246,1249,3,110,55,0,1247,1249,3,112,56,0,1248,1242,1,0,0,0, + 1248,1243,1,0,0,0,1248,1244,1,0,0,0,1248,1245,1,0,0,0,1248,1246,1,0,0, + 0,1248,1247,1,0,0,0,1249,99,1,0,0,0,1250,1251,5,47,0,0,1251,1255,5,186, + 0,0,1252,1253,3,46,23,0,1253,1254,5,186,0,0,1254,1256,1,0,0,0,1255,1252, + 1,0,0,0,1255,1256,1,0,0,0,1256,1257,1,0,0,0,1257,1258,3,358,179,0,1258, + 1259,5,186,0,0,1259,1262,3,132,66,0,1260,1261,5,186,0,0,1261,1263,3,102, + 51,0,1262,1260,1,0,0,0,1262,1263,1,0,0,0,1263,101,1,0,0,0,1264,1265,5, + 72,0,0,1265,1266,5,186,0,0,1266,1267,3,262,131,0,1267,103,1,0,0,0,1268, + 1269,5,78,0,0,1269,1273,5,186,0,0,1270,1271,3,92,46,0,1271,1272,5,186, + 0,0,1272,1274,1,0,0,0,1273,1270,1,0,0,0,1273,1274,1,0,0,0,1274,1275,1, + 0,0,0,1275,1276,3,358,179,0,1276,105,1,0,0,0,1277,1278,5,129,0,0,1278, + 1279,5,186,0,0,1279,1280,5,141,0,0,1280,1281,5,186,0,0,1281,1282,3,364, + 182,0,1282,107,1,0,0,0,1283,1284,5,129,0,0,1284,1285,5,186,0,0,1285,1286, + 3,358,179,0,1286,1287,5,186,0,0,1287,1288,5,141,0,0,1288,1289,5,186,0, + 0,1289,1290,3,358,179,0,1290,109,1,0,0,0,1291,1292,5,47,0,0,1292,1296, + 5,186,0,0,1293,1294,3,46,23,0,1294,1295,5,186,0,0,1295,1297,1,0,0,0,1296, + 1293,1,0,0,0,1296,1297,1,0,0,0,1297,1298,1,0,0,0,1298,1299,3,68,34,0, + 1299,111,1,0,0,0,1300,1301,5,78,0,0,1301,1305,5,186,0,0,1302,1303,3,92, + 46,0,1303,1304,5,186,0,0,1304,1306,1,0,0,0,1305,1302,1,0,0,0,1305,1306, + 1,0,0,0,1306,1307,1,0,0,0,1307,1308,3,68,34,0,1308,113,1,0,0,0,1309,1320, + 3,116,58,0,1310,1312,5,186,0,0,1311,1310,1,0,0,0,1311,1312,1,0,0,0,1312, + 1313,1,0,0,0,1313,1315,5,4,0,0,1314,1316,5,186,0,0,1315,1314,1,0,0,0, + 1315,1316,1,0,0,0,1316,1317,1,0,0,0,1317,1319,3,116,58,0,1318,1311,1, + 0,0,0,1319,1322,1,0,0,0,1320,1318,1,0,0,0,1320,1321,1,0,0,0,1321,115, + 1,0,0,0,1322,1320,1,0,0,0,1323,1324,3,358,179,0,1324,1325,5,186,0,0,1325, + 1326,3,132,66,0,1326,117,1,0,0,0,1327,1338,3,120,60,0,1328,1330,5,186, + 0,0,1329,1328,1,0,0,0,1329,1330,1,0,0,0,1330,1331,1,0,0,0,1331,1333,5, + 4,0,0,1332,1334,5,186,0,0,1333,1332,1,0,0,0,1333,1334,1,0,0,0,1334,1335, + 1,0,0,0,1335,1337,3,120,60,0,1336,1329,1,0,0,0,1337,1340,1,0,0,0,1338, + 1336,1,0,0,0,1338,1339,1,0,0,0,1339,119,1,0,0,0,1340,1338,1,0,0,0,1341, + 1344,3,116,58,0,1342,1343,5,186,0,0,1343,1345,3,102,51,0,1344,1342,1, + 0,0,0,1344,1345,1,0,0,0,1345,1350,1,0,0,0,1346,1347,5,186,0,0,1347,1348, + 5,124,0,0,1348,1349,5,186,0,0,1349,1351,5,103,0,0,1350,1346,1,0,0,0,1350, + 1351,1,0,0,0,1351,121,1,0,0,0,1352,1353,5,124,0,0,1353,1354,5,186,0,0, + 1354,1356,5,103,0,0,1355,1357,5,186,0,0,1356,1355,1,0,0,0,1356,1357,1, + 0,0,0,1357,1358,1,0,0,0,1358,1360,5,2,0,0,1359,1361,5,186,0,0,1360,1359, + 1,0,0,0,1360,1361,1,0,0,0,1361,1362,1,0,0,0,1362,1364,3,358,179,0,1363, + 1365,5,186,0,0,1364,1363,1,0,0,0,1364,1365,1,0,0,0,1365,1366,1,0,0,0, + 1366,1367,5,3,0,0,1367,123,1,0,0,0,1368,1370,5,146,0,0,1369,1371,5,186, + 0,0,1370,1369,1,0,0,0,1370,1371,1,0,0,0,1371,1372,1,0,0,0,1372,1374,5, + 2,0,0,1373,1375,5,186,0,0,1374,1373,1,0,0,0,1374,1375,1,0,0,0,1375,1376, + 1,0,0,0,1376,1378,3,114,57,0,1377,1379,5,186,0,0,1378,1377,1,0,0,0,1378, + 1379,1,0,0,0,1379,1380,1,0,0,0,1380,1381,5,3,0,0,1381,125,1,0,0,0,1382, + 1384,5,138,0,0,1383,1385,5,186,0,0,1384,1383,1,0,0,0,1384,1385,1,0,0, + 0,1385,1386,1,0,0,0,1386,1388,5,2,0,0,1387,1389,5,186,0,0,1388,1387,1, + 0,0,0,1388,1389,1,0,0,0,1389,1390,1,0,0,0,1390,1392,3,114,57,0,1391,1393, + 5,186,0,0,1392,1391,1,0,0,0,1392,1393,1,0,0,0,1393,1394,1,0,0,0,1394, + 1395,5,3,0,0,1395,127,1,0,0,0,1396,1398,5,162,0,0,1397,1399,5,186,0,0, + 1398,1397,1,0,0,0,1398,1399,1,0,0,0,1399,1400,1,0,0,0,1400,1402,5,2,0, + 0,1401,1403,5,186,0,0,1402,1401,1,0,0,0,1402,1403,1,0,0,0,1403,1404,1, + 0,0,0,1404,1406,3,132,66,0,1405,1407,5,186,0,0,1406,1405,1,0,0,0,1406, + 1407,1,0,0,0,1407,1408,1,0,0,0,1408,1410,5,4,0,0,1409,1411,5,186,0,0, + 1410,1409,1,0,0,0,1410,1411,1,0,0,0,1411,1412,1,0,0,0,1412,1414,3,132, + 66,0,1413,1415,5,186,0,0,1414,1413,1,0,0,0,1414,1415,1,0,0,0,1415,1416, + 1,0,0,0,1416,1417,5,3,0,0,1417,129,1,0,0,0,1418,1420,5,163,0,0,1419,1421, + 5,186,0,0,1420,1419,1,0,0,0,1420,1421,1,0,0,0,1421,1422,1,0,0,0,1422, + 1424,5,2,0,0,1423,1425,5,186,0,0,1424,1423,1,0,0,0,1424,1425,1,0,0,0, + 1425,1426,1,0,0,0,1426,1428,3,360,180,0,1427,1429,5,186,0,0,1428,1427, + 1,0,0,0,1428,1429,1,0,0,0,1429,1430,1,0,0,0,1430,1432,5,4,0,0,1431,1433, + 5,186,0,0,1432,1431,1,0,0,0,1432,1433,1,0,0,0,1433,1434,1,0,0,0,1434, + 1436,3,360,180,0,1435,1437,5,186,0,0,1436,1435,1,0,0,0,1436,1437,1,0, + 0,0,1437,1438,1,0,0,0,1438,1439,5,3,0,0,1439,131,1,0,0,0,1440,1441,6, + 66,-1,0,1441,1447,3,366,183,0,1442,1447,3,124,62,0,1443,1447,3,126,63, + 0,1444,1447,3,128,64,0,1445,1447,3,130,65,0,1446,1440,1,0,0,0,1446,1442, + 1,0,0,0,1446,1443,1,0,0,0,1446,1444,1,0,0,0,1446,1445,1,0,0,0,1447,1452, + 1,0,0,0,1448,1449,10,5,0,0,1449,1451,3,134,67,0,1450,1448,1,0,0,0,1451, + 1454,1,0,0,0,1452,1450,1,0,0,0,1452,1453,1,0,0,0,1453,133,1,0,0,0,1454, + 1452,1,0,0,0,1455,1459,3,136,68,0,1456,1458,3,136,68,0,1457,1456,1,0, + 0,0,1458,1461,1,0,0,0,1459,1457,1,0,0,0,1459,1460,1,0,0,0,1460,135,1, + 0,0,0,1461,1459,1,0,0,0,1462,1464,5,7,0,0,1463,1465,3,360,180,0,1464, + 1463,1,0,0,0,1464,1465,1,0,0,0,1465,1466,1,0,0,0,1466,1467,5,8,0,0,1467, + 137,1,0,0,0,1468,1471,3,140,70,0,1469,1471,3,142,71,0,1470,1468,1,0,0, + 0,1470,1469,1,0,0,0,1471,139,1,0,0,0,1472,1475,5,83,0,0,1473,1474,5,186, + 0,0,1474,1476,5,106,0,0,1475,1473,1,0,0,0,1475,1476,1,0,0,0,1476,141, + 1,0,0,0,1477,1478,5,125,0,0,1478,143,1,0,0,0,1479,1480,5,55,0,0,1480, + 1481,5,186,0,0,1481,1493,5,143,0,0,1482,1483,5,55,0,0,1483,1484,5,186, + 0,0,1484,1485,5,143,0,0,1485,1486,5,186,0,0,1486,1487,5,127,0,0,1487, + 1488,5,186,0,0,1488,1493,5,119,0,0,1489,1493,5,63,0,0,1490,1493,5,131, + 0,0,1491,1493,5,60,0,0,1492,1479,1,0,0,0,1492,1482,1,0,0,0,1492,1489, + 1,0,0,0,1492,1490,1,0,0,0,1492,1491,1,0,0,0,1493,145,1,0,0,0,1494,1499, + 3,148,74,0,1495,1499,3,150,75,0,1496,1499,3,152,76,0,1497,1499,3,154, + 77,0,1498,1494,1,0,0,0,1498,1495,1,0,0,0,1498,1496,1,0,0,0,1498,1497, + 1,0,0,0,1499,147,1,0,0,0,1500,1501,5,105,0,0,1501,1504,5,186,0,0,1502, + 1503,5,85,0,0,1503,1505,5,186,0,0,1504,1502,1,0,0,0,1504,1505,1,0,0,0, + 1505,1508,1,0,0,0,1506,1509,5,171,0,0,1507,1509,3,350,175,0,1508,1506, + 1,0,0,0,1508,1507,1,0,0,0,1509,149,1,0,0,0,1510,1511,5,88,0,0,1511,1513, + 5,186,0,0,1512,1510,1,0,0,0,1512,1513,1,0,0,0,1513,1514,1,0,0,0,1514, + 1515,5,100,0,0,1515,1516,5,186,0,0,1516,1521,3,350,175,0,1517,1518,5, + 186,0,0,1518,1519,5,87,0,0,1519,1520,5,186,0,0,1520,1522,5,171,0,0,1521, + 1517,1,0,0,0,1521,1522,1,0,0,0,1522,151,1,0,0,0,1523,1524,5,148,0,0,1524, + 1525,5,186,0,0,1525,1526,3,350,175,0,1526,153,1,0,0,0,1527,1528,5,149, + 0,0,1528,1529,5,186,0,0,1529,1530,3,350,175,0,1530,155,1,0,0,0,1531,1532, + 3,158,79,0,1532,157,1,0,0,0,1533,1540,3,162,81,0,1534,1536,5,186,0,0, + 1535,1534,1,0,0,0,1535,1536,1,0,0,0,1536,1537,1,0,0,0,1537,1539,3,160, + 80,0,1538,1535,1,0,0,0,1539,1542,1,0,0,0,1540,1538,1,0,0,0,1540,1541, + 1,0,0,0,1541,1555,1,0,0,0,1542,1540,1,0,0,0,1543,1545,3,204,102,0,1544, + 1546,5,186,0,0,1545,1544,1,0,0,0,1545,1546,1,0,0,0,1546,1548,1,0,0,0, + 1547,1543,1,0,0,0,1548,1549,1,0,0,0,1549,1547,1,0,0,0,1549,1550,1,0,0, + 0,1550,1551,1,0,0,0,1551,1552,3,162,81,0,1552,1553,6,79,-1,0,1553,1555, + 1,0,0,0,1554,1533,1,0,0,0,1554,1547,1,0,0,0,1555,159,1,0,0,0,1556,1557, + 5,146,0,0,1557,1558,5,186,0,0,1558,1560,5,48,0,0,1559,1561,5,186,0,0, + 1560,1559,1,0,0,0,1560,1561,1,0,0,0,1561,1562,1,0,0,0,1562,1569,3,162, + 81,0,1563,1565,5,146,0,0,1564,1566,5,186,0,0,1565,1564,1,0,0,0,1565,1566, + 1,0,0,0,1566,1567,1,0,0,0,1567,1569,3,162,81,0,1568,1556,1,0,0,0,1568, + 1563,1,0,0,0,1569,161,1,0,0,0,1570,1573,3,164,82,0,1571,1573,3,166,83, + 0,1572,1570,1,0,0,0,1572,1571,1,0,0,0,1573,163,1,0,0,0,1574,1576,3,172, + 86,0,1575,1577,5,186,0,0,1576,1575,1,0,0,0,1576,1577,1,0,0,0,1577,1579, + 1,0,0,0,1578,1574,1,0,0,0,1579,1582,1,0,0,0,1580,1578,1,0,0,0,1580,1581, + 1,0,0,0,1581,1583,1,0,0,0,1582,1580,1,0,0,0,1583,1610,3,204,102,0,1584, + 1586,3,172,86,0,1585,1587,5,186,0,0,1586,1585,1,0,0,0,1586,1587,1,0,0, + 0,1587,1589,1,0,0,0,1588,1584,1,0,0,0,1589,1592,1,0,0,0,1590,1588,1,0, + 0,0,1590,1591,1,0,0,0,1591,1593,1,0,0,0,1592,1590,1,0,0,0,1593,1600,3, + 170,85,0,1594,1596,5,186,0,0,1595,1594,1,0,0,0,1595,1596,1,0,0,0,1596, + 1597,1,0,0,0,1597,1599,3,170,85,0,1598,1595,1,0,0,0,1599,1602,1,0,0,0, + 1600,1598,1,0,0,0,1600,1601,1,0,0,0,1601,1607,1,0,0,0,1602,1600,1,0,0, + 0,1603,1605,5,186,0,0,1604,1603,1,0,0,0,1604,1605,1,0,0,0,1605,1606,1, + 0,0,0,1606,1608,3,204,102,0,1607,1604,1,0,0,0,1607,1608,1,0,0,0,1608, + 1610,1,0,0,0,1609,1580,1,0,0,0,1609,1590,1,0,0,0,1610,165,1,0,0,0,1611, + 1613,3,168,84,0,1612,1614,5,186,0,0,1613,1612,1,0,0,0,1613,1614,1,0,0, + 0,1614,1616,1,0,0,0,1615,1611,1,0,0,0,1616,1617,1,0,0,0,1617,1615,1,0, + 0,0,1617,1618,1,0,0,0,1618,1619,1,0,0,0,1619,1620,3,164,82,0,1620,167, + 1,0,0,0,1621,1623,3,172,86,0,1622,1624,5,186,0,0,1623,1622,1,0,0,0,1623, + 1624,1,0,0,0,1624,1626,1,0,0,0,1625,1621,1,0,0,0,1626,1629,1,0,0,0,1627, + 1625,1,0,0,0,1627,1628,1,0,0,0,1628,1636,1,0,0,0,1629,1627,1,0,0,0,1630, + 1632,3,170,85,0,1631,1633,5,186,0,0,1632,1631,1,0,0,0,1632,1633,1,0,0, + 0,1633,1635,1,0,0,0,1634,1630,1,0,0,0,1635,1638,1,0,0,0,1636,1634,1,0, + 0,0,1636,1637,1,0,0,0,1637,1639,1,0,0,0,1638,1636,1,0,0,0,1639,1640,3, + 202,101,0,1640,169,1,0,0,0,1641,1646,3,190,95,0,1642,1646,3,192,96,0, + 1643,1646,3,196,98,0,1644,1646,3,200,100,0,1645,1641,1,0,0,0,1645,1642, + 1,0,0,0,1645,1643,1,0,0,0,1645,1644,1,0,0,0,1646,171,1,0,0,0,1647,1652, + 3,182,91,0,1648,1652,3,188,94,0,1649,1652,3,180,90,0,1650,1652,3,174, + 87,0,1651,1647,1,0,0,0,1651,1648,1,0,0,0,1651,1649,1,0,0,0,1651,1650, + 1,0,0,0,1652,173,1,0,0,0,1653,1671,5,105,0,0,1654,1655,5,186,0,0,1655, + 1656,5,153,0,0,1656,1657,5,186,0,0,1657,1659,5,93,0,0,1658,1660,5,186, + 0,0,1659,1658,1,0,0,0,1659,1660,1,0,0,0,1660,1661,1,0,0,0,1661,1663,5, + 2,0,0,1662,1664,5,186,0,0,1663,1662,1,0,0,0,1663,1664,1,0,0,0,1664,1665, + 1,0,0,0,1665,1667,3,114,57,0,1666,1668,5,186,0,0,1667,1666,1,0,0,0,1667, + 1668,1,0,0,0,1668,1669,1,0,0,0,1669,1670,5,3,0,0,1670,1672,1,0,0,0,1671, + 1654,1,0,0,0,1671,1672,1,0,0,0,1672,1673,1,0,0,0,1673,1674,5,186,0,0, + 1674,1675,5,87,0,0,1675,1676,5,186,0,0,1676,1690,3,10,5,0,1677,1679,5, + 186,0,0,1678,1677,1,0,0,0,1678,1679,1,0,0,0,1679,1680,1,0,0,0,1680,1682, + 5,2,0,0,1681,1683,5,186,0,0,1682,1681,1,0,0,0,1682,1683,1,0,0,0,1683, + 1684,1,0,0,0,1684,1686,3,24,12,0,1685,1687,5,186,0,0,1686,1685,1,0,0, + 0,1686,1687,1,0,0,0,1687,1688,1,0,0,0,1688,1689,5,3,0,0,1689,1691,1,0, + 0,0,1690,1678,1,0,0,0,1690,1691,1,0,0,0,1691,1696,1,0,0,0,1692,1694,5, + 186,0,0,1693,1692,1,0,0,0,1693,1694,1,0,0,0,1694,1695,1,0,0,0,1695,1697, + 3,220,110,0,1696,1693,1,0,0,0,1696,1697,1,0,0,0,1697,175,1,0,0,0,1698, + 1699,3,350,175,0,1699,1700,5,186,0,0,1700,1701,5,51,0,0,1701,1702,5,186, + 0,0,1702,1704,1,0,0,0,1703,1698,1,0,0,0,1703,1704,1,0,0,0,1704,1705,1, + 0,0,0,1705,1706,3,350,175,0,1706,177,1,0,0,0,1707,1718,3,176,88,0,1708, + 1710,5,186,0,0,1709,1708,1,0,0,0,1709,1710,1,0,0,0,1710,1711,1,0,0,0, + 1711,1713,5,4,0,0,1712,1714,5,186,0,0,1713,1712,1,0,0,0,1713,1714,1,0, + 0,0,1714,1715,1,0,0,0,1715,1717,3,176,88,0,1716,1709,1,0,0,0,1717,1720, + 1,0,0,0,1718,1716,1,0,0,0,1718,1719,1,0,0,0,1719,179,1,0,0,0,1720,1718, + 1,0,0,0,1721,1722,5,57,0,0,1722,1723,5,186,0,0,1723,1728,3,330,165,0, + 1724,1726,5,186,0,0,1725,1724,1,0,0,0,1725,1726,1,0,0,0,1726,1727,1,0, + 0,0,1727,1729,3,220,110,0,1728,1725,1,0,0,0,1728,1729,1,0,0,0,1729,1736, + 1,0,0,0,1730,1732,5,186,0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732, + 1733,1,0,0,0,1733,1734,5,158,0,0,1734,1735,5,186,0,0,1735,1737,3,178, + 89,0,1736,1731,1,0,0,0,1736,1737,1,0,0,0,1737,181,1,0,0,0,1738,1739,5, + 121,0,0,1739,1741,5,186,0,0,1740,1738,1,0,0,0,1740,1741,1,0,0,0,1741, + 1742,1,0,0,0,1742,1744,5,108,0,0,1743,1745,5,186,0,0,1744,1743,1,0,0, + 0,1744,1745,1,0,0,0,1745,1746,1,0,0,0,1746,1749,3,222,111,0,1747,1748, + 5,186,0,0,1748,1750,3,220,110,0,1749,1747,1,0,0,0,1749,1750,1,0,0,0,1750, + 1753,1,0,0,0,1751,1752,5,186,0,0,1752,1754,3,184,92,0,1753,1751,1,0,0, + 0,1753,1754,1,0,0,0,1754,183,1,0,0,0,1755,1756,5,94,0,0,1756,1757,5,186, + 0,0,1757,1758,3,186,93,0,1758,185,1,0,0,0,1759,1760,6,93,-1,0,1760,1762, + 5,2,0,0,1761,1763,5,186,0,0,1762,1761,1,0,0,0,1762,1763,1,0,0,0,1763, + 1764,1,0,0,0,1764,1766,3,186,93,0,1765,1767,5,186,0,0,1766,1765,1,0,0, + 0,1766,1767,1,0,0,0,1767,1768,1,0,0,0,1768,1769,5,3,0,0,1769,1772,1,0, + 0,0,1770,1772,3,364,182,0,1771,1759,1,0,0,0,1771,1770,1,0,0,0,1772,1789, + 1,0,0,0,1773,1774,10,4,0,0,1774,1775,5,186,0,0,1775,1776,5,102,0,0,1776, + 1777,5,186,0,0,1777,1788,3,186,93,5,1778,1783,10,3,0,0,1779,1780,5,186, + 0,0,1780,1781,5,112,0,0,1781,1782,5,186,0,0,1782,1784,3,364,182,0,1783, + 1779,1,0,0,0,1784,1785,1,0,0,0,1785,1783,1,0,0,0,1785,1786,1,0,0,0,1786, + 1788,1,0,0,0,1787,1773,1,0,0,0,1787,1778,1,0,0,0,1788,1791,1,0,0,0,1789, + 1787,1,0,0,0,1789,1790,1,0,0,0,1790,187,1,0,0,0,1791,1789,1,0,0,0,1792, + 1794,5,147,0,0,1793,1795,5,186,0,0,1794,1793,1,0,0,0,1794,1795,1,0,0, + 0,1795,1796,1,0,0,0,1796,1797,3,262,131,0,1797,1798,5,186,0,0,1798,1799, + 5,51,0,0,1799,1800,5,186,0,0,1800,1801,3,350,175,0,1801,189,1,0,0,0,1802, + 1804,5,68,0,0,1803,1805,5,186,0,0,1804,1803,1,0,0,0,1804,1805,1,0,0,0, + 1805,1806,1,0,0,0,1806,1807,3,222,111,0,1807,191,1,0,0,0,1808,1810,5, + 110,0,0,1809,1811,5,186,0,0,1810,1809,1,0,0,0,1810,1811,1,0,0,0,1811, + 1812,1,0,0,0,1812,1817,3,222,111,0,1813,1814,5,186,0,0,1814,1816,3,194, + 97,0,1815,1813,1,0,0,0,1816,1819,1,0,0,0,1817,1815,1,0,0,0,1817,1818, + 1,0,0,0,1818,193,1,0,0,0,1819,1817,1,0,0,0,1820,1821,5,118,0,0,1821,1822, + 5,186,0,0,1822,1823,5,108,0,0,1823,1824,5,186,0,0,1824,1831,3,196,98, + 0,1825,1826,5,118,0,0,1826,1827,5,186,0,0,1827,1828,5,68,0,0,1828,1829, + 5,186,0,0,1829,1831,3,196,98,0,1830,1820,1,0,0,0,1830,1825,1,0,0,0,1831, + 195,1,0,0,0,1832,1834,5,134,0,0,1833,1835,5,186,0,0,1834,1833,1,0,0,0, + 1834,1835,1,0,0,0,1835,1836,1,0,0,0,1836,1847,3,198,99,0,1837,1839,5, + 186,0,0,1838,1837,1,0,0,0,1838,1839,1,0,0,0,1839,1840,1,0,0,0,1840,1842, + 5,4,0,0,1841,1843,5,186,0,0,1842,1841,1,0,0,0,1842,1843,1,0,0,0,1843, + 1844,1,0,0,0,1844,1846,3,198,99,0,1845,1838,1,0,0,0,1846,1849,1,0,0,0, + 1847,1845,1,0,0,0,1847,1848,1,0,0,0,1848,1865,1,0,0,0,1849,1847,1,0,0, + 0,1850,1852,5,134,0,0,1851,1853,5,186,0,0,1852,1851,1,0,0,0,1852,1853, + 1,0,0,0,1853,1854,1,0,0,0,1854,1856,3,308,154,0,1855,1857,5,186,0,0,1856, + 1855,1,0,0,0,1856,1857,1,0,0,0,1857,1858,1,0,0,0,1858,1860,5,6,0,0,1859, + 1861,5,186,0,0,1860,1859,1,0,0,0,1860,1861,1,0,0,0,1861,1862,1,0,0,0, + 1862,1863,3,238,119,0,1863,1865,1,0,0,0,1864,1832,1,0,0,0,1864,1850,1, + 0,0,0,1865,197,1,0,0,0,1866,1868,3,356,178,0,1867,1869,5,186,0,0,1868, + 1867,1,0,0,0,1868,1869,1,0,0,0,1869,1870,1,0,0,0,1870,1872,5,6,0,0,1871, + 1873,5,186,0,0,1872,1871,1,0,0,0,1872,1873,1,0,0,0,1873,1874,1,0,0,0, + 1874,1875,3,262,131,0,1875,199,1,0,0,0,1876,1877,5,76,0,0,1877,1879,5, + 186,0,0,1878,1876,1,0,0,0,1878,1879,1,0,0,0,1879,1880,1,0,0,0,1880,1882, + 5,73,0,0,1881,1883,5,186,0,0,1882,1881,1,0,0,0,1882,1883,1,0,0,0,1883, + 1884,1,0,0,0,1884,1895,3,262,131,0,1885,1887,5,186,0,0,1886,1885,1,0, + 0,0,1886,1887,1,0,0,0,1887,1888,1,0,0,0,1888,1890,5,4,0,0,1889,1891,5, + 186,0,0,1890,1889,1,0,0,0,1890,1891,1,0,0,0,1891,1892,1,0,0,0,1892,1894, + 3,262,131,0,1893,1886,1,0,0,0,1894,1897,1,0,0,0,1895,1893,1,0,0,0,1895, + 1896,1,0,0,0,1896,201,1,0,0,0,1897,1895,1,0,0,0,1898,1899,5,153,0,0,1899, + 1904,3,206,103,0,1900,1902,5,186,0,0,1901,1900,1,0,0,0,1901,1902,1,0, + 0,0,1902,1903,1,0,0,0,1903,1905,3,220,110,0,1904,1901,1,0,0,0,1904,1905, + 1,0,0,0,1905,203,1,0,0,0,1906,1907,5,130,0,0,1907,1908,3,206,103,0,1908, + 205,1,0,0,0,1909,1911,5,186,0,0,1910,1909,1,0,0,0,1910,1911,1,0,0,0,1911, + 1912,1,0,0,0,1912,1914,5,77,0,0,1913,1910,1,0,0,0,1913,1914,1,0,0,0,1914, + 1915,1,0,0,0,1915,1916,5,186,0,0,1916,1919,3,208,104,0,1917,1918,5,186, + 0,0,1918,1920,3,212,106,0,1919,1917,1,0,0,0,1919,1920,1,0,0,0,1920,1923, + 1,0,0,0,1921,1922,5,186,0,0,1922,1924,3,214,107,0,1923,1921,1,0,0,0,1923, + 1924,1,0,0,0,1924,1927,1,0,0,0,1925,1926,5,186,0,0,1926,1928,3,216,108, + 0,1927,1925,1,0,0,0,1927,1928,1,0,0,0,1928,207,1,0,0,0,1929,1940,5,164, + 0,0,1930,1932,5,186,0,0,1931,1930,1,0,0,0,1931,1932,1,0,0,0,1932,1933, + 1,0,0,0,1933,1935,5,4,0,0,1934,1936,5,186,0,0,1935,1934,1,0,0,0,1935, + 1936,1,0,0,0,1936,1937,1,0,0,0,1937,1939,3,210,105,0,1938,1931,1,0,0, + 0,1939,1942,1,0,0,0,1940,1938,1,0,0,0,1940,1941,1,0,0,0,1941,1958,1,0, + 0,0,1942,1940,1,0,0,0,1943,1954,3,210,105,0,1944,1946,5,186,0,0,1945, + 1944,1,0,0,0,1945,1946,1,0,0,0,1946,1947,1,0,0,0,1947,1949,5,4,0,0,1948, + 1950,5,186,0,0,1949,1948,1,0,0,0,1949,1950,1,0,0,0,1950,1951,1,0,0,0, + 1951,1953,3,210,105,0,1952,1945,1,0,0,0,1953,1956,1,0,0,0,1954,1952,1, + 0,0,0,1954,1955,1,0,0,0,1955,1958,1,0,0,0,1956,1954,1,0,0,0,1957,1929, + 1,0,0,0,1957,1943,1,0,0,0,1958,209,1,0,0,0,1959,1960,3,262,131,0,1960, + 1961,5,186,0,0,1961,1962,5,51,0,0,1962,1963,5,186,0,0,1963,1964,3,350, + 175,0,1964,1967,1,0,0,0,1965,1967,3,262,131,0,1966,1959,1,0,0,0,1966, + 1965,1,0,0,0,1967,211,1,0,0,0,1968,1969,5,123,0,0,1969,1970,5,186,0,0, + 1970,1971,5,56,0,0,1971,1972,5,186,0,0,1972,1980,3,218,109,0,1973,1975, + 5,4,0,0,1974,1976,5,186,0,0,1975,1974,1,0,0,0,1975,1976,1,0,0,0,1976, + 1977,1,0,0,0,1977,1979,3,218,109,0,1978,1973,1,0,0,0,1979,1982,1,0,0, + 0,1980,1978,1,0,0,0,1980,1981,1,0,0,0,1981,213,1,0,0,0,1982,1980,1,0, + 0,0,1983,1984,5,165,0,0,1984,1985,5,186,0,0,1985,1986,3,262,131,0,1986, + 215,1,0,0,0,1987,1988,5,104,0,0,1988,1989,5,186,0,0,1989,1990,3,262,131, + 0,1990,217,1,0,0,0,1991,1996,3,262,131,0,1992,1994,5,186,0,0,1993,1992, + 1,0,0,0,1993,1994,1,0,0,0,1994,1995,1,0,0,0,1995,1997,7,1,0,0,1996,1993, + 1,0,0,0,1996,1997,1,0,0,0,1997,219,1,0,0,0,1998,1999,5,152,0,0,1999,2000, + 5,186,0,0,2000,2001,3,262,131,0,2001,221,1,0,0,0,2002,2013,3,224,112, + 0,2003,2005,5,186,0,0,2004,2003,1,0,0,0,2004,2005,1,0,0,0,2005,2006,1, + 0,0,0,2006,2008,5,4,0,0,2007,2009,5,186,0,0,2008,2007,1,0,0,0,2008,2009, + 1,0,0,0,2009,2010,1,0,0,0,2010,2012,3,224,112,0,2011,2004,1,0,0,0,2012, + 2015,1,0,0,0,2013,2011,1,0,0,0,2013,2014,1,0,0,0,2014,223,1,0,0,0,2015, + 2013,1,0,0,0,2016,2018,3,350,175,0,2017,2019,5,186,0,0,2018,2017,1,0, + 0,0,2018,2019,1,0,0,0,2019,2020,1,0,0,0,2020,2022,5,6,0,0,2021,2023,5, + 186,0,0,2022,2021,1,0,0,0,2022,2023,1,0,0,0,2023,2024,1,0,0,0,2024,2025, + 3,226,113,0,2025,2028,1,0,0,0,2026,2028,3,226,113,0,2027,2016,1,0,0,0, + 2027,2026,1,0,0,0,2028,225,1,0,0,0,2029,2030,3,228,114,0,2030,227,1,0, + 0,0,2031,2038,3,230,115,0,2032,2034,5,186,0,0,2033,2032,1,0,0,0,2033, + 2034,1,0,0,0,2034,2035,1,0,0,0,2035,2037,3,232,116,0,2036,2033,1,0,0, + 0,2037,2040,1,0,0,0,2038,2036,1,0,0,0,2038,2039,1,0,0,0,2039,2046,1,0, + 0,0,2040,2038,1,0,0,0,2041,2042,5,2,0,0,2042,2043,3,228,114,0,2043,2044, + 5,3,0,0,2044,2046,1,0,0,0,2045,2031,1,0,0,0,2045,2041,1,0,0,0,2046,229, + 1,0,0,0,2047,2049,5,2,0,0,2048,2050,5,186,0,0,2049,2048,1,0,0,0,2049, + 2050,1,0,0,0,2050,2055,1,0,0,0,2051,2053,3,350,175,0,2052,2054,5,186, + 0,0,2053,2052,1,0,0,0,2053,2054,1,0,0,0,2054,2056,1,0,0,0,2055,2051,1, + 0,0,0,2055,2056,1,0,0,0,2056,2061,1,0,0,0,2057,2059,3,242,121,0,2058, + 2060,5,186,0,0,2059,2058,1,0,0,0,2059,2060,1,0,0,0,2060,2062,1,0,0,0, + 2061,2057,1,0,0,0,2061,2062,1,0,0,0,2062,2067,1,0,0,0,2063,2065,3,238, + 119,0,2064,2066,5,186,0,0,2065,2064,1,0,0,0,2065,2066,1,0,0,0,2066,2068, + 1,0,0,0,2067,2063,1,0,0,0,2067,2068,1,0,0,0,2068,2069,1,0,0,0,2069,2070, + 5,3,0,0,2070,231,1,0,0,0,2071,2073,3,234,117,0,2072,2074,5,186,0,0,2073, + 2072,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075,2076,3,230,115, + 0,2076,233,1,0,0,0,2077,2079,3,370,185,0,2078,2080,5,186,0,0,2079,2078, + 1,0,0,0,2079,2080,1,0,0,0,2080,2081,1,0,0,0,2081,2083,3,374,187,0,2082, + 2084,5,186,0,0,2083,2082,1,0,0,0,2083,2084,1,0,0,0,2084,2086,1,0,0,0, + 2085,2087,3,236,118,0,2086,2085,1,0,0,0,2086,2087,1,0,0,0,2087,2089,1, + 0,0,0,2088,2090,5,186,0,0,2089,2088,1,0,0,0,2089,2090,1,0,0,0,2090,2091, + 1,0,0,0,2091,2092,3,374,187,0,2092,2122,1,0,0,0,2093,2095,3,374,187,0, + 2094,2096,5,186,0,0,2095,2094,1,0,0,0,2095,2096,1,0,0,0,2096,2098,1,0, + 0,0,2097,2099,3,236,118,0,2098,2097,1,0,0,0,2098,2099,1,0,0,0,2099,2101, + 1,0,0,0,2100,2102,5,186,0,0,2101,2100,1,0,0,0,2101,2102,1,0,0,0,2102, + 2103,1,0,0,0,2103,2105,3,374,187,0,2104,2106,5,186,0,0,2105,2104,1,0, + 0,0,2105,2106,1,0,0,0,2106,2107,1,0,0,0,2107,2108,3,372,186,0,2108,2122, + 1,0,0,0,2109,2111,3,374,187,0,2110,2112,5,186,0,0,2111,2110,1,0,0,0,2111, + 2112,1,0,0,0,2112,2114,1,0,0,0,2113,2115,3,236,118,0,2114,2113,1,0,0, + 0,2114,2115,1,0,0,0,2115,2117,1,0,0,0,2116,2118,5,186,0,0,2117,2116,1, + 0,0,0,2117,2118,1,0,0,0,2118,2119,1,0,0,0,2119,2120,3,374,187,0,2120, + 2122,1,0,0,0,2121,2077,1,0,0,0,2121,2093,1,0,0,0,2121,2109,1,0,0,0,2122, + 235,1,0,0,0,2123,2125,5,7,0,0,2124,2126,5,186,0,0,2125,2124,1,0,0,0,2125, + 2126,1,0,0,0,2126,2131,1,0,0,0,2127,2129,3,350,175,0,2128,2130,5,186, + 0,0,2129,2128,1,0,0,0,2129,2130,1,0,0,0,2130,2132,1,0,0,0,2131,2127,1, + 0,0,0,2131,2132,1,0,0,0,2132,2137,1,0,0,0,2133,2135,3,240,120,0,2134, + 2136,5,186,0,0,2135,2134,1,0,0,0,2135,2136,1,0,0,0,2136,2138,1,0,0,0, + 2137,2133,1,0,0,0,2137,2138,1,0,0,0,2138,2143,1,0,0,0,2139,2141,3,244, + 122,0,2140,2142,5,186,0,0,2141,2140,1,0,0,0,2141,2142,1,0,0,0,2142,2144, + 1,0,0,0,2143,2139,1,0,0,0,2143,2144,1,0,0,0,2144,2149,1,0,0,0,2145,2147, + 3,238,119,0,2146,2148,5,186,0,0,2147,2146,1,0,0,0,2147,2148,1,0,0,0,2148, + 2150,1,0,0,0,2149,2145,1,0,0,0,2149,2150,1,0,0,0,2150,2151,1,0,0,0,2151, + 2152,5,8,0,0,2152,237,1,0,0,0,2153,2155,5,9,0,0,2154,2156,5,186,0,0,2155, + 2154,1,0,0,0,2155,2156,1,0,0,0,2156,2190,1,0,0,0,2157,2159,3,358,179, + 0,2158,2160,5,186,0,0,2159,2158,1,0,0,0,2159,2160,1,0,0,0,2160,2161,1, + 0,0,0,2161,2163,5,167,0,0,2162,2164,5,186,0,0,2163,2162,1,0,0,0,2163, + 2164,1,0,0,0,2164,2165,1,0,0,0,2165,2167,3,262,131,0,2166,2168,5,186, + 0,0,2167,2166,1,0,0,0,2167,2168,1,0,0,0,2168,2187,1,0,0,0,2169,2171,5, + 4,0,0,2170,2172,5,186,0,0,2171,2170,1,0,0,0,2171,2172,1,0,0,0,2172,2173, + 1,0,0,0,2173,2175,3,358,179,0,2174,2176,5,186,0,0,2175,2174,1,0,0,0,2175, + 2176,1,0,0,0,2176,2177,1,0,0,0,2177,2179,5,167,0,0,2178,2180,5,186,0, + 0,2179,2178,1,0,0,0,2179,2180,1,0,0,0,2180,2181,1,0,0,0,2181,2183,3,262, + 131,0,2182,2184,5,186,0,0,2183,2182,1,0,0,0,2183,2184,1,0,0,0,2184,2186, + 1,0,0,0,2185,2169,1,0,0,0,2186,2189,1,0,0,0,2187,2185,1,0,0,0,2187,2188, + 1,0,0,0,2188,2191,1,0,0,0,2189,2187,1,0,0,0,2190,2157,1,0,0,0,2190,2191, + 1,0,0,0,2191,2192,1,0,0,0,2192,2193,5,10,0,0,2193,239,1,0,0,0,2194,2196, + 5,167,0,0,2195,2197,5,186,0,0,2196,2195,1,0,0,0,2196,2197,1,0,0,0,2197, + 2198,1,0,0,0,2198,2212,3,260,130,0,2199,2201,5,186,0,0,2200,2199,1,0, + 0,0,2200,2201,1,0,0,0,2201,2202,1,0,0,0,2202,2204,5,11,0,0,2203,2205, + 5,167,0,0,2204,2203,1,0,0,0,2204,2205,1,0,0,0,2205,2207,1,0,0,0,2206, + 2208,5,186,0,0,2207,2206,1,0,0,0,2207,2208,1,0,0,0,2208,2209,1,0,0,0, + 2209,2211,3,260,130,0,2210,2200,1,0,0,0,2211,2214,1,0,0,0,2212,2210,1, + 0,0,0,2212,2213,1,0,0,0,2213,241,1,0,0,0,2214,2212,1,0,0,0,2215,2217, + 5,167,0,0,2216,2218,5,186,0,0,2217,2216,1,0,0,0,2217,2218,1,0,0,0,2218, + 2219,1,0,0,0,2219,2236,3,258,129,0,2220,2222,5,186,0,0,2221,2220,1,0, + 0,0,2221,2222,1,0,0,0,2222,2228,1,0,0,0,2223,2225,5,11,0,0,2224,2226, + 5,167,0,0,2225,2224,1,0,0,0,2225,2226,1,0,0,0,2226,2229,1,0,0,0,2227, + 2229,5,167,0,0,2228,2223,1,0,0,0,2228,2227,1,0,0,0,2229,2231,1,0,0,0, + 2230,2232,5,186,0,0,2231,2230,1,0,0,0,2231,2232,1,0,0,0,2232,2233,1,0, + 0,0,2233,2235,3,258,129,0,2234,2221,1,0,0,0,2235,2238,1,0,0,0,2236,2234, + 1,0,0,0,2236,2237,1,0,0,0,2237,243,1,0,0,0,2238,2236,1,0,0,0,2239,2244, + 5,164,0,0,2240,2242,5,186,0,0,2241,2240,1,0,0,0,2241,2242,1,0,0,0,2242, + 2243,1,0,0,0,2243,2245,3,246,123,0,2244,2241,1,0,0,0,2244,2245,1,0,0, + 0,2245,2250,1,0,0,0,2246,2248,5,186,0,0,2247,2246,1,0,0,0,2247,2248,1, + 0,0,0,2248,2249,1,0,0,0,2249,2251,3,248,124,0,2250,2247,1,0,0,0,2250, + 2251,1,0,0,0,2251,2256,1,0,0,0,2252,2254,5,186,0,0,2253,2252,1,0,0,0, + 2253,2254,1,0,0,0,2254,2255,1,0,0,0,2255,2257,3,250,125,0,2256,2253,1, + 0,0,0,2256,2257,1,0,0,0,2257,245,1,0,0,0,2258,2259,5,48,0,0,2259,2261, + 5,186,0,0,2260,2258,1,0,0,0,2260,2261,1,0,0,0,2261,2262,1,0,0,0,2262, + 2264,5,155,0,0,2263,2265,5,186,0,0,2264,2263,1,0,0,0,2264,2265,1,0,0, + 0,2265,2266,1,0,0,0,2266,2268,5,2,0,0,2267,2269,5,186,0,0,2268,2267,1, + 0,0,0,2268,2269,1,0,0,0,2269,2270,1,0,0,0,2270,2272,3,358,179,0,2271, + 2273,5,186,0,0,2272,2271,1,0,0,0,2272,2273,1,0,0,0,2273,2274,1,0,0,0, + 2274,2275,5,3,0,0,2275,2283,1,0,0,0,2276,2283,5,135,0,0,2277,2278,5,48, + 0,0,2278,2279,5,186,0,0,2279,2283,5,135,0,0,2280,2283,5,142,0,0,2281, + 2283,5,45,0,0,2282,2260,1,0,0,0,2282,2276,1,0,0,0,2282,2277,1,0,0,0,2282, + 2280,1,0,0,0,2282,2281,1,0,0,0,2283,247,1,0,0,0,2284,2286,3,254,127,0, + 2285,2284,1,0,0,0,2285,2286,1,0,0,0,2286,2288,1,0,0,0,2287,2289,5,186, + 0,0,2288,2287,1,0,0,0,2288,2289,1,0,0,0,2289,2290,1,0,0,0,2290,2292,5, + 168,0,0,2291,2293,5,186,0,0,2292,2291,1,0,0,0,2292,2293,1,0,0,0,2293, + 2295,1,0,0,0,2294,2296,3,256,128,0,2295,2294,1,0,0,0,2295,2296,1,0,0, + 0,2296,2299,1,0,0,0,2297,2299,3,360,180,0,2298,2285,1,0,0,0,2298,2297, + 1,0,0,0,2299,249,1,0,0,0,2300,2302,5,2,0,0,2301,2303,5,186,0,0,2302,2301, + 1,0,0,0,2302,2303,1,0,0,0,2303,2304,1,0,0,0,2304,2306,3,350,175,0,2305, + 2307,5,186,0,0,2306,2305,1,0,0,0,2306,2307,1,0,0,0,2307,2308,1,0,0,0, + 2308,2310,5,4,0,0,2309,2311,5,186,0,0,2310,2309,1,0,0,0,2310,2311,1,0, + 0,0,2311,2312,1,0,0,0,2312,2324,3,350,175,0,2313,2315,5,186,0,0,2314, + 2313,1,0,0,0,2314,2315,1,0,0,0,2315,2316,1,0,0,0,2316,2318,5,11,0,0,2317, + 2319,5,186,0,0,2318,2317,1,0,0,0,2318,2319,1,0,0,0,2319,2320,1,0,0,0, + 2320,2322,3,220,110,0,2321,2323,5,186,0,0,2322,2321,1,0,0,0,2322,2323, + 1,0,0,0,2323,2325,1,0,0,0,2324,2314,1,0,0,0,2324,2325,1,0,0,0,2325,2345, + 1,0,0,0,2326,2328,5,186,0,0,2327,2326,1,0,0,0,2327,2328,1,0,0,0,2328, + 2329,1,0,0,0,2329,2331,5,11,0,0,2330,2332,5,186,0,0,2331,2330,1,0,0,0, + 2331,2332,1,0,0,0,2332,2333,1,0,0,0,2333,2335,3,252,126,0,2334,2336,5, + 186,0,0,2335,2334,1,0,0,0,2335,2336,1,0,0,0,2336,2337,1,0,0,0,2337,2339, + 5,4,0,0,2338,2340,5,186,0,0,2339,2338,1,0,0,0,2339,2340,1,0,0,0,2340, + 2341,1,0,0,0,2341,2343,3,252,126,0,2342,2344,5,186,0,0,2343,2342,1,0, + 0,0,2343,2344,1,0,0,0,2344,2346,1,0,0,0,2345,2327,1,0,0,0,2345,2346,1, + 0,0,0,2346,2347,1,0,0,0,2347,2348,5,3,0,0,2348,251,1,0,0,0,2349,2351, + 5,9,0,0,2350,2352,5,186,0,0,2351,2350,1,0,0,0,2351,2352,1,0,0,0,2352, + 2354,1,0,0,0,2353,2355,3,208,104,0,2354,2353,1,0,0,0,2354,2355,1,0,0, + 0,2355,2357,1,0,0,0,2356,2358,5,186,0,0,2357,2356,1,0,0,0,2357,2358,1, + 0,0,0,2358,2359,1,0,0,0,2359,2360,5,10,0,0,2360,253,1,0,0,0,2361,2362, + 5,173,0,0,2362,255,1,0,0,0,2363,2364,5,173,0,0,2364,257,1,0,0,0,2365, + 2368,3,364,182,0,2366,2367,5,5,0,0,2367,2369,3,364,182,0,2368,2366,1, + 0,0,0,2368,2369,1,0,0,0,2369,259,1,0,0,0,2370,2371,3,364,182,0,2371,261, + 1,0,0,0,2372,2373,3,264,132,0,2373,263,1,0,0,0,2374,2381,3,266,133,0, + 2375,2376,5,186,0,0,2376,2377,5,122,0,0,2377,2378,5,186,0,0,2378,2380, + 3,266,133,0,2379,2375,1,0,0,0,2380,2383,1,0,0,0,2381,2379,1,0,0,0,2381, + 2382,1,0,0,0,2382,265,1,0,0,0,2383,2381,1,0,0,0,2384,2391,3,268,134,0, + 2385,2386,5,186,0,0,2386,2387,5,156,0,0,2387,2388,5,186,0,0,2388,2390, + 3,268,134,0,2389,2385,1,0,0,0,2390,2393,1,0,0,0,2391,2389,1,0,0,0,2391, + 2392,1,0,0,0,2392,267,1,0,0,0,2393,2391,1,0,0,0,2394,2401,3,270,135,0, + 2395,2396,5,186,0,0,2396,2397,5,50,0,0,2397,2398,5,186,0,0,2398,2400, + 3,270,135,0,2399,2395,1,0,0,0,2400,2403,1,0,0,0,2401,2399,1,0,0,0,2401, + 2402,1,0,0,0,2402,269,1,0,0,0,2403,2401,1,0,0,0,2404,2406,5,115,0,0,2405, + 2407,5,186,0,0,2406,2405,1,0,0,0,2406,2407,1,0,0,0,2407,2409,1,0,0,0, + 2408,2404,1,0,0,0,2409,2412,1,0,0,0,2410,2408,1,0,0,0,2410,2411,1,0,0, + 0,2411,2413,1,0,0,0,2412,2410,1,0,0,0,2413,2414,3,272,136,0,2414,271, + 1,0,0,0,2415,2425,3,276,138,0,2416,2418,5,186,0,0,2417,2416,1,0,0,0,2417, + 2418,1,0,0,0,2418,2419,1,0,0,0,2419,2421,3,274,137,0,2420,2422,5,186, + 0,0,2421,2420,1,0,0,0,2421,2422,1,0,0,0,2422,2423,1,0,0,0,2423,2424,3, + 276,138,0,2424,2426,1,0,0,0,2425,2417,1,0,0,0,2425,2426,1,0,0,0,2426, + 2464,1,0,0,0,2427,2429,3,276,138,0,2428,2430,5,186,0,0,2429,2428,1,0, + 0,0,2429,2430,1,0,0,0,2430,2431,1,0,0,0,2431,2433,5,166,0,0,2432,2434, + 5,186,0,0,2433,2432,1,0,0,0,2433,2434,1,0,0,0,2434,2435,1,0,0,0,2435, + 2436,3,276,138,0,2436,2437,1,0,0,0,2437,2438,6,136,-1,0,2438,2464,1,0, + 0,0,2439,2441,3,276,138,0,2440,2442,5,186,0,0,2441,2440,1,0,0,0,2441, + 2442,1,0,0,0,2442,2443,1,0,0,0,2443,2445,3,274,137,0,2444,2446,5,186, + 0,0,2445,2444,1,0,0,0,2445,2446,1,0,0,0,2446,2447,1,0,0,0,2447,2457,3, + 276,138,0,2448,2450,5,186,0,0,2449,2448,1,0,0,0,2449,2450,1,0,0,0,2450, + 2451,1,0,0,0,2451,2453,3,274,137,0,2452,2454,5,186,0,0,2453,2452,1,0, + 0,0,2453,2454,1,0,0,0,2454,2455,1,0,0,0,2455,2456,3,276,138,0,2456,2458, + 1,0,0,0,2457,2449,1,0,0,0,2458,2459,1,0,0,0,2459,2457,1,0,0,0,2459,2460, + 1,0,0,0,2460,2461,1,0,0,0,2461,2462,6,136,-1,0,2462,2464,1,0,0,0,2463, + 2415,1,0,0,0,2463,2427,1,0,0,0,2463,2439,1,0,0,0,2464,273,1,0,0,0,2465, + 2466,7,2,0,0,2466,275,1,0,0,0,2467,2478,3,278,139,0,2468,2470,5,186,0, + 0,2469,2468,1,0,0,0,2469,2470,1,0,0,0,2470,2471,1,0,0,0,2471,2473,5,11, + 0,0,2472,2474,5,186,0,0,2473,2472,1,0,0,0,2473,2474,1,0,0,0,2474,2475, + 1,0,0,0,2475,2477,3,278,139,0,2476,2469,1,0,0,0,2477,2480,1,0,0,0,2478, + 2476,1,0,0,0,2478,2479,1,0,0,0,2479,277,1,0,0,0,2480,2478,1,0,0,0,2481, + 2492,3,280,140,0,2482,2484,5,186,0,0,2483,2482,1,0,0,0,2483,2484,1,0, + 0,0,2484,2485,1,0,0,0,2485,2487,5,17,0,0,2486,2488,5,186,0,0,2487,2486, + 1,0,0,0,2487,2488,1,0,0,0,2488,2489,1,0,0,0,2489,2491,3,280,140,0,2490, + 2483,1,0,0,0,2491,2494,1,0,0,0,2492,2490,1,0,0,0,2492,2493,1,0,0,0,2493, + 279,1,0,0,0,2494,2492,1,0,0,0,2495,2507,3,284,142,0,2496,2498,5,186,0, + 0,2497,2496,1,0,0,0,2497,2498,1,0,0,0,2498,2499,1,0,0,0,2499,2501,3,282, + 141,0,2500,2502,5,186,0,0,2501,2500,1,0,0,0,2501,2502,1,0,0,0,2502,2503, + 1,0,0,0,2503,2504,3,284,142,0,2504,2506,1,0,0,0,2505,2497,1,0,0,0,2506, + 2509,1,0,0,0,2507,2505,1,0,0,0,2507,2508,1,0,0,0,2508,281,1,0,0,0,2509, + 2507,1,0,0,0,2510,2511,7,3,0,0,2511,283,1,0,0,0,2512,2524,3,288,144,0, + 2513,2515,5,186,0,0,2514,2513,1,0,0,0,2514,2515,1,0,0,0,2515,2516,1,0, + 0,0,2516,2518,3,286,143,0,2517,2519,5,186,0,0,2518,2517,1,0,0,0,2518, + 2519,1,0,0,0,2519,2520,1,0,0,0,2520,2521,3,288,144,0,2521,2523,1,0,0, + 0,2522,2514,1,0,0,0,2523,2526,1,0,0,0,2524,2522,1,0,0,0,2524,2525,1,0, + 0,0,2525,285,1,0,0,0,2526,2524,1,0,0,0,2527,2528,7,4,0,0,2528,287,1,0, + 0,0,2529,2541,3,292,146,0,2530,2532,5,186,0,0,2531,2530,1,0,0,0,2531, + 2532,1,0,0,0,2532,2533,1,0,0,0,2533,2535,3,290,145,0,2534,2536,5,186, + 0,0,2535,2534,1,0,0,0,2535,2536,1,0,0,0,2536,2537,1,0,0,0,2537,2538,3, + 292,146,0,2538,2540,1,0,0,0,2539,2531,1,0,0,0,2540,2543,1,0,0,0,2541, + 2539,1,0,0,0,2541,2542,1,0,0,0,2542,289,1,0,0,0,2543,2541,1,0,0,0,2544, + 2545,7,5,0,0,2545,291,1,0,0,0,2546,2557,3,294,147,0,2547,2549,5,186,0, + 0,2548,2547,1,0,0,0,2548,2549,1,0,0,0,2549,2550,1,0,0,0,2550,2552,5,23, + 0,0,2551,2553,5,186,0,0,2552,2551,1,0,0,0,2552,2553,1,0,0,0,2553,2554, + 1,0,0,0,2554,2556,3,294,147,0,2555,2548,1,0,0,0,2556,2559,1,0,0,0,2557, + 2555,1,0,0,0,2557,2558,1,0,0,0,2558,293,1,0,0,0,2559,2557,1,0,0,0,2560, + 2568,3,304,152,0,2561,2569,3,298,149,0,2562,2564,3,296,148,0,2563,2562, + 1,0,0,0,2564,2565,1,0,0,0,2565,2563,1,0,0,0,2565,2566,1,0,0,0,2566,2569, + 1,0,0,0,2567,2569,3,302,151,0,2568,2561,1,0,0,0,2568,2563,1,0,0,0,2568, + 2567,1,0,0,0,2568,2569,1,0,0,0,2569,295,1,0,0,0,2570,2571,5,186,0,0,2571, + 2573,5,98,0,0,2572,2574,5,186,0,0,2573,2572,1,0,0,0,2573,2574,1,0,0,0, + 2574,2575,1,0,0,0,2575,2590,3,306,153,0,2576,2577,5,7,0,0,2577,2578,3, + 262,131,0,2578,2579,5,8,0,0,2579,2590,1,0,0,0,2580,2582,5,7,0,0,2581, + 2583,3,262,131,0,2582,2581,1,0,0,0,2582,2583,1,0,0,0,2583,2584,1,0,0, + 0,2584,2586,7,6,0,0,2585,2587,3,262,131,0,2586,2585,1,0,0,0,2586,2587, + 1,0,0,0,2587,2588,1,0,0,0,2588,2590,5,8,0,0,2589,2570,1,0,0,0,2589,2576, + 1,0,0,0,2589,2580,1,0,0,0,2590,297,1,0,0,0,2591,2603,3,300,150,0,2592, + 2593,5,186,0,0,2593,2594,5,137,0,0,2594,2595,5,186,0,0,2595,2603,5,153, + 0,0,2596,2597,5,186,0,0,2597,2598,5,81,0,0,2598,2599,5,186,0,0,2599,2603, + 5,153,0,0,2600,2601,5,186,0,0,2601,2603,5,65,0,0,2602,2591,1,0,0,0,2602, + 2592,1,0,0,0,2602,2596,1,0,0,0,2602,2600,1,0,0,0,2603,2605,1,0,0,0,2604, + 2606,5,186,0,0,2605,2604,1,0,0,0,2605,2606,1,0,0,0,2606,2607,1,0,0,0, + 2607,2608,3,306,153,0,2608,299,1,0,0,0,2609,2611,5,186,0,0,2610,2609, + 1,0,0,0,2610,2611,1,0,0,0,2611,2612,1,0,0,0,2612,2613,5,24,0,0,2613,301, + 1,0,0,0,2614,2615,5,186,0,0,2615,2616,5,101,0,0,2616,2617,5,186,0,0,2617, + 2625,5,117,0,0,2618,2619,5,186,0,0,2619,2620,5,101,0,0,2620,2621,5,186, + 0,0,2621,2622,5,115,0,0,2622,2623,5,186,0,0,2623,2625,5,117,0,0,2624, + 2614,1,0,0,0,2624,2618,1,0,0,0,2625,303,1,0,0,0,2626,2628,5,169,0,0,2627, + 2629,5,186,0,0,2628,2627,1,0,0,0,2628,2629,1,0,0,0,2629,2631,1,0,0,0, + 2630,2626,1,0,0,0,2631,2634,1,0,0,0,2632,2630,1,0,0,0,2632,2633,1,0,0, + 0,2633,2635,1,0,0,0,2634,2632,1,0,0,0,2635,2640,3,306,153,0,2636,2638, + 5,186,0,0,2637,2636,1,0,0,0,2637,2638,1,0,0,0,2638,2639,1,0,0,0,2639, + 2641,5,170,0,0,2640,2637,1,0,0,0,2640,2641,1,0,0,0,2641,305,1,0,0,0,2642, + 2649,3,308,154,0,2643,2645,5,186,0,0,2644,2643,1,0,0,0,2644,2645,1,0, + 0,0,2645,2646,1,0,0,0,2646,2648,3,344,172,0,2647,2644,1,0,0,0,2648,2651, + 1,0,0,0,2649,2647,1,0,0,0,2649,2650,1,0,0,0,2650,307,1,0,0,0,2651,2649, + 1,0,0,0,2652,2662,3,316,158,0,2653,2662,3,354,177,0,2654,2662,3,346,173, + 0,2655,2662,3,328,164,0,2656,2662,3,330,165,0,2657,2662,3,340,170,0,2658, + 2662,3,342,171,0,2659,2662,3,350,175,0,2660,2662,3,310,155,0,2661,2652, + 1,0,0,0,2661,2653,1,0,0,0,2661,2654,1,0,0,0,2661,2655,1,0,0,0,2661,2656, + 1,0,0,0,2661,2657,1,0,0,0,2661,2658,1,0,0,0,2661,2659,1,0,0,0,2661,2660, + 1,0,0,0,2662,309,1,0,0,0,2663,2665,5,48,0,0,2664,2666,5,186,0,0,2665, + 2664,1,0,0,0,2665,2666,1,0,0,0,2666,2667,1,0,0,0,2667,2669,5,2,0,0,2668, + 2670,5,186,0,0,2669,2668,1,0,0,0,2669,2670,1,0,0,0,2670,2671,1,0,0,0, + 2671,2673,3,312,156,0,2672,2674,5,186,0,0,2673,2672,1,0,0,0,2673,2674, + 1,0,0,0,2674,2675,1,0,0,0,2675,2676,5,3,0,0,2676,2720,1,0,0,0,2677,2679, + 5,46,0,0,2678,2680,5,186,0,0,2679,2678,1,0,0,0,2679,2680,1,0,0,0,2680, + 2681,1,0,0,0,2681,2683,5,2,0,0,2682,2684,5,186,0,0,2683,2682,1,0,0,0, + 2683,2684,1,0,0,0,2684,2685,1,0,0,0,2685,2687,3,312,156,0,2686,2688,5, + 186,0,0,2687,2686,1,0,0,0,2687,2688,1,0,0,0,2688,2689,1,0,0,0,2689,2690, + 5,3,0,0,2690,2720,1,0,0,0,2691,2693,5,116,0,0,2692,2694,5,186,0,0,2693, + 2692,1,0,0,0,2693,2694,1,0,0,0,2694,2695,1,0,0,0,2695,2697,5,2,0,0,2696, + 2698,5,186,0,0,2697,2696,1,0,0,0,2697,2698,1,0,0,0,2698,2699,1,0,0,0, + 2699,2701,3,312,156,0,2700,2702,5,186,0,0,2701,2700,1,0,0,0,2701,2702, + 1,0,0,0,2702,2703,1,0,0,0,2703,2704,5,3,0,0,2704,2720,1,0,0,0,2705,2707, + 5,157,0,0,2706,2708,5,186,0,0,2707,2706,1,0,0,0,2707,2708,1,0,0,0,2708, + 2709,1,0,0,0,2709,2711,5,2,0,0,2710,2712,5,186,0,0,2711,2710,1,0,0,0, + 2711,2712,1,0,0,0,2712,2713,1,0,0,0,2713,2715,3,312,156,0,2714,2716,5, + 186,0,0,2715,2714,1,0,0,0,2715,2716,1,0,0,0,2716,2717,1,0,0,0,2717,2718, + 5,3,0,0,2718,2720,1,0,0,0,2719,2663,1,0,0,0,2719,2677,1,0,0,0,2719,2691, + 1,0,0,0,2719,2705,1,0,0,0,2720,311,1,0,0,0,2721,2722,3,314,157,0,2722, + 2723,5,186,0,0,2723,2724,3,220,110,0,2724,313,1,0,0,0,2725,2726,3,350, + 175,0,2726,2727,5,186,0,0,2727,2728,5,98,0,0,2728,2729,5,186,0,0,2729, + 2730,3,262,131,0,2730,315,1,0,0,0,2731,2738,3,352,176,0,2732,2738,5,171, + 0,0,2733,2738,3,318,159,0,2734,2738,5,117,0,0,2735,2738,3,320,160,0,2736, + 2738,3,324,162,0,2737,2731,1,0,0,0,2737,2732,1,0,0,0,2737,2733,1,0,0, + 0,2737,2734,1,0,0,0,2737,2735,1,0,0,0,2737,2736,1,0,0,0,2738,317,1,0, + 0,0,2739,2740,7,7,0,0,2740,319,1,0,0,0,2741,2743,5,7,0,0,2742,2744,5, + 186,0,0,2743,2742,1,0,0,0,2743,2744,1,0,0,0,2744,2758,1,0,0,0,2745,2747, + 3,262,131,0,2746,2748,5,186,0,0,2747,2746,1,0,0,0,2747,2748,1,0,0,0,2748, + 2755,1,0,0,0,2749,2751,3,322,161,0,2750,2752,5,186,0,0,2751,2750,1,0, + 0,0,2751,2752,1,0,0,0,2752,2754,1,0,0,0,2753,2749,1,0,0,0,2754,2757,1, + 0,0,0,2755,2753,1,0,0,0,2755,2756,1,0,0,0,2756,2759,1,0,0,0,2757,2755, + 1,0,0,0,2758,2745,1,0,0,0,2758,2759,1,0,0,0,2759,2760,1,0,0,0,2760,2761, + 5,8,0,0,2761,321,1,0,0,0,2762,2764,5,4,0,0,2763,2765,5,186,0,0,2764,2763, + 1,0,0,0,2764,2765,1,0,0,0,2765,2767,1,0,0,0,2766,2768,3,262,131,0,2767, + 2766,1,0,0,0,2767,2768,1,0,0,0,2768,323,1,0,0,0,2769,2771,5,9,0,0,2770, + 2772,5,186,0,0,2771,2770,1,0,0,0,2771,2772,1,0,0,0,2772,2773,1,0,0,0, + 2773,2775,3,326,163,0,2774,2776,5,186,0,0,2775,2774,1,0,0,0,2775,2776, + 1,0,0,0,2776,2787,1,0,0,0,2777,2779,5,4,0,0,2778,2780,5,186,0,0,2779, + 2778,1,0,0,0,2779,2780,1,0,0,0,2780,2781,1,0,0,0,2781,2783,3,326,163, + 0,2782,2784,5,186,0,0,2783,2782,1,0,0,0,2783,2784,1,0,0,0,2784,2786,1, + 0,0,0,2785,2777,1,0,0,0,2786,2789,1,0,0,0,2787,2785,1,0,0,0,2787,2788, + 1,0,0,0,2788,2790,1,0,0,0,2789,2787,1,0,0,0,2790,2791,5,10,0,0,2791,325, + 1,0,0,0,2792,2795,3,366,183,0,2793,2795,5,171,0,0,2794,2792,1,0,0,0,2794, + 2793,1,0,0,0,2795,2797,1,0,0,0,2796,2798,5,186,0,0,2797,2796,1,0,0,0, + 2797,2798,1,0,0,0,2798,2799,1,0,0,0,2799,2801,5,167,0,0,2800,2802,5,186, + 0,0,2801,2800,1,0,0,0,2801,2802,1,0,0,0,2802,2803,1,0,0,0,2803,2804,3, + 262,131,0,2804,327,1,0,0,0,2805,2807,5,2,0,0,2806,2808,5,186,0,0,2807, + 2806,1,0,0,0,2807,2808,1,0,0,0,2808,2809,1,0,0,0,2809,2811,3,262,131, + 0,2810,2812,5,186,0,0,2811,2810,1,0,0,0,2811,2812,1,0,0,0,2812,2813,1, + 0,0,0,2813,2814,5,3,0,0,2814,329,1,0,0,0,2815,2817,5,67,0,0,2816,2818, + 5,186,0,0,2817,2816,1,0,0,0,2817,2818,1,0,0,0,2818,2819,1,0,0,0,2819, + 2821,5,2,0,0,2820,2822,5,186,0,0,2821,2820,1,0,0,0,2821,2822,1,0,0,0, + 2822,2823,1,0,0,0,2823,2825,5,164,0,0,2824,2826,5,186,0,0,2825,2824,1, + 0,0,0,2825,2826,1,0,0,0,2826,2827,1,0,0,0,2827,2893,5,3,0,0,2828,2830, + 5,59,0,0,2829,2831,5,186,0,0,2830,2829,1,0,0,0,2830,2831,1,0,0,0,2831, + 2832,1,0,0,0,2832,2834,5,2,0,0,2833,2835,5,186,0,0,2834,2833,1,0,0,0, + 2834,2835,1,0,0,0,2835,2836,1,0,0,0,2836,2838,3,334,167,0,2837,2839,5, + 186,0,0,2838,2837,1,0,0,0,2838,2839,1,0,0,0,2839,2850,1,0,0,0,2840,2842, + 5,51,0,0,2841,2843,5,186,0,0,2842,2841,1,0,0,0,2842,2843,1,0,0,0,2843, + 2844,1,0,0,0,2844,2851,3,132,66,0,2845,2847,5,4,0,0,2846,2848,5,186,0, + 0,2847,2846,1,0,0,0,2847,2848,1,0,0,0,2848,2849,1,0,0,0,2849,2851,3,334, + 167,0,2850,2840,1,0,0,0,2850,2845,1,0,0,0,2851,2853,1,0,0,0,2852,2854, + 5,186,0,0,2853,2852,1,0,0,0,2853,2854,1,0,0,0,2854,2855,1,0,0,0,2855, + 2856,5,3,0,0,2856,2893,1,0,0,0,2857,2859,3,332,166,0,2858,2860,5,186, + 0,0,2859,2858,1,0,0,0,2859,2860,1,0,0,0,2860,2861,1,0,0,0,2861,2863,5, + 2,0,0,2862,2864,5,186,0,0,2863,2862,1,0,0,0,2863,2864,1,0,0,0,2864,2869, + 1,0,0,0,2865,2867,5,77,0,0,2866,2868,5,186,0,0,2867,2866,1,0,0,0,2867, + 2868,1,0,0,0,2868,2870,1,0,0,0,2869,2865,1,0,0,0,2869,2870,1,0,0,0,2870, + 2888,1,0,0,0,2871,2873,3,334,167,0,2872,2874,5,186,0,0,2873,2872,1,0, + 0,0,2873,2874,1,0,0,0,2874,2885,1,0,0,0,2875,2877,5,4,0,0,2876,2878,5, + 186,0,0,2877,2876,1,0,0,0,2877,2878,1,0,0,0,2878,2879,1,0,0,0,2879,2881, + 3,334,167,0,2880,2882,5,186,0,0,2881,2880,1,0,0,0,2881,2882,1,0,0,0,2882, + 2884,1,0,0,0,2883,2875,1,0,0,0,2884,2887,1,0,0,0,2885,2883,1,0,0,0,2885, + 2886,1,0,0,0,2886,2889,1,0,0,0,2887,2885,1,0,0,0,2888,2871,1,0,0,0,2888, + 2889,1,0,0,0,2889,2890,1,0,0,0,2890,2891,5,3,0,0,2891,2893,1,0,0,0,2892, + 2815,1,0,0,0,2892,2828,1,0,0,0,2892,2857,1,0,0,0,2893,331,1,0,0,0,2894, + 2895,3,366,183,0,2895,333,1,0,0,0,2896,2898,3,366,183,0,2897,2899,5,186, + 0,0,2898,2897,1,0,0,0,2898,2899,1,0,0,0,2899,2900,1,0,0,0,2900,2901,5, + 167,0,0,2901,2903,5,6,0,0,2902,2904,5,186,0,0,2903,2902,1,0,0,0,2903, + 2904,1,0,0,0,2904,2906,1,0,0,0,2905,2896,1,0,0,0,2905,2906,1,0,0,0,2906, + 2907,1,0,0,0,2907,2910,3,262,131,0,2908,2910,3,336,168,0,2909,2905,1, + 0,0,0,2909,2908,1,0,0,0,2910,335,1,0,0,0,2911,2913,3,338,169,0,2912,2914, + 5,186,0,0,2913,2912,1,0,0,0,2913,2914,1,0,0,0,2914,2915,1,0,0,0,2915, + 2916,5,169,0,0,2916,2918,5,15,0,0,2917,2919,5,186,0,0,2918,2917,1,0,0, + 0,2918,2919,1,0,0,0,2919,2920,1,0,0,0,2920,2922,3,262,131,0,2921,2923, + 5,186,0,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923,337,1,0,0,0,2924,2949, + 3,366,183,0,2925,2927,5,2,0,0,2926,2928,5,186,0,0,2927,2926,1,0,0,0,2927, + 2928,1,0,0,0,2928,2929,1,0,0,0,2929,2931,3,366,183,0,2930,2932,5,186, + 0,0,2931,2930,1,0,0,0,2931,2932,1,0,0,0,2932,2943,1,0,0,0,2933,2935,5, + 4,0,0,2934,2936,5,186,0,0,2935,2934,1,0,0,0,2935,2936,1,0,0,0,2936,2937, + 1,0,0,0,2937,2939,3,366,183,0,2938,2940,5,186,0,0,2939,2938,1,0,0,0,2939, + 2940,1,0,0,0,2940,2942,1,0,0,0,2941,2933,1,0,0,0,2942,2945,1,0,0,0,2943, + 2941,1,0,0,0,2943,2944,1,0,0,0,2944,2946,1,0,0,0,2945,2943,1,0,0,0,2946, + 2947,5,3,0,0,2947,2949,1,0,0,0,2948,2924,1,0,0,0,2948,2925,1,0,0,0,2949, + 339,1,0,0,0,2950,2955,3,230,115,0,2951,2953,5,186,0,0,2952,2951,1,0,0, + 0,2952,2953,1,0,0,0,2953,2954,1,0,0,0,2954,2956,3,232,116,0,2955,2952, + 1,0,0,0,2956,2957,1,0,0,0,2957,2955,1,0,0,0,2957,2958,1,0,0,0,2958,341, + 1,0,0,0,2959,2961,7,8,0,0,2960,2962,5,186,0,0,2961,2960,1,0,0,0,2961, + 2962,1,0,0,0,2962,2963,1,0,0,0,2963,2965,5,9,0,0,2964,2966,5,186,0,0, + 2965,2964,1,0,0,0,2965,2966,1,0,0,0,2966,2967,1,0,0,0,2967,2969,5,108, + 0,0,2968,2970,5,186,0,0,2969,2968,1,0,0,0,2969,2970,1,0,0,0,2970,2971, + 1,0,0,0,2971,2976,3,222,111,0,2972,2974,5,186,0,0,2973,2972,1,0,0,0,2973, + 2974,1,0,0,0,2974,2975,1,0,0,0,2975,2977,3,220,110,0,2976,2973,1,0,0, + 0,2976,2977,1,0,0,0,2977,2982,1,0,0,0,2978,2980,5,186,0,0,2979,2978,1, + 0,0,0,2979,2980,1,0,0,0,2980,2981,1,0,0,0,2981,2983,3,184,92,0,2982,2979, + 1,0,0,0,2982,2983,1,0,0,0,2983,2985,1,0,0,0,2984,2986,5,186,0,0,2985, + 2984,1,0,0,0,2985,2986,1,0,0,0,2986,2987,1,0,0,0,2987,2988,5,10,0,0,2988, + 343,1,0,0,0,2989,2991,5,5,0,0,2990,2992,5,186,0,0,2991,2990,1,0,0,0,2991, + 2992,1,0,0,0,2992,2995,1,0,0,0,2993,2996,3,358,179,0,2994,2996,5,164, + 0,0,2995,2993,1,0,0,0,2995,2994,1,0,0,0,2996,345,1,0,0,0,2997,3002,5, + 58,0,0,2998,3000,5,186,0,0,2999,2998,1,0,0,0,2999,3000,1,0,0,0,3000,3001, + 1,0,0,0,3001,3003,3,348,174,0,3002,2999,1,0,0,0,3003,3004,1,0,0,0,3004, + 3002,1,0,0,0,3004,3005,1,0,0,0,3005,3020,1,0,0,0,3006,3008,5,58,0,0,3007, + 3009,5,186,0,0,3008,3007,1,0,0,0,3008,3009,1,0,0,0,3009,3010,1,0,0,0, + 3010,3015,3,262,131,0,3011,3013,5,186,0,0,3012,3011,1,0,0,0,3012,3013, + 1,0,0,0,3013,3014,1,0,0,0,3014,3016,3,348,174,0,3015,3012,1,0,0,0,3016, + 3017,1,0,0,0,3017,3015,1,0,0,0,3017,3018,1,0,0,0,3018,3020,1,0,0,0,3019, + 2997,1,0,0,0,3019,3006,1,0,0,0,3020,3029,1,0,0,0,3021,3023,5,186,0,0, + 3022,3021,1,0,0,0,3022,3023,1,0,0,0,3023,3024,1,0,0,0,3024,3026,5,79, + 0,0,3025,3027,5,186,0,0,3026,3025,1,0,0,0,3026,3027,1,0,0,0,3027,3028, + 1,0,0,0,3028,3030,3,262,131,0,3029,3022,1,0,0,0,3029,3030,1,0,0,0,3030, + 3032,1,0,0,0,3031,3033,5,186,0,0,3032,3031,1,0,0,0,3032,3033,1,0,0,0, + 3033,3034,1,0,0,0,3034,3035,5,80,0,0,3035,347,1,0,0,0,3036,3038,5,151, + 0,0,3037,3039,5,186,0,0,3038,3037,1,0,0,0,3038,3039,1,0,0,0,3039,3040, + 1,0,0,0,3040,3042,3,262,131,0,3041,3043,5,186,0,0,3042,3041,1,0,0,0,3042, + 3043,1,0,0,0,3043,3044,1,0,0,0,3044,3046,5,140,0,0,3045,3047,5,186,0, + 0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3048,1,0,0,0,3048,3049,3,262, + 131,0,3049,349,1,0,0,0,3050,3051,3,366,183,0,3051,351,1,0,0,0,3052,3055, + 3,362,181,0,3053,3055,3,360,180,0,3054,3052,1,0,0,0,3054,3053,1,0,0,0, + 3055,353,1,0,0,0,3056,3059,5,25,0,0,3057,3060,3,366,183,0,3058,3060,5, + 173,0,0,3059,3057,1,0,0,0,3059,3058,1,0,0,0,3060,355,1,0,0,0,3061,3063, + 3,308,154,0,3062,3064,5,186,0,0,3063,3062,1,0,0,0,3063,3064,1,0,0,0,3064, + 3065,1,0,0,0,3065,3066,3,344,172,0,3066,357,1,0,0,0,3067,3068,3,366,183, + 0,3068,359,1,0,0,0,3069,3070,5,173,0,0,3070,361,1,0,0,0,3071,3072,7,9, + 0,0,3072,363,1,0,0,0,3073,3076,3,366,183,0,3074,3075,5,5,0,0,3075,3077, + 3,366,183,0,3076,3074,1,0,0,0,3076,3077,1,0,0,0,3077,365,1,0,0,0,3078, + 3084,5,182,0,0,3079,3080,5,185,0,0,3080,3084,6,183,-1,0,3081,3084,5,174, + 0,0,3082,3084,3,368,184,0,3083,3078,1,0,0,0,3083,3079,1,0,0,0,3083,3081, + 1,0,0,0,3083,3082,1,0,0,0,3084,367,1,0,0,0,3085,3086,7,10,0,0,3086,369, + 1,0,0,0,3087,3088,7,11,0,0,3088,371,1,0,0,0,3089,3090,7,12,0,0,3090,373, + 1,0,0,0,3091,3092,7,13,0,0,3092,375,1,0,0,0,528,378,382,387,391,396,399, + 403,406,433,439,446,450,454,458,461,465,469,473,478,482,484,491,495,504, + 509,519,523,527,532,545,549,557,561,565,569,577,581,585,589,604,609,615, + 619,622,625,631,635,640,643,648,652,656,661,679,691,695,702,722,726,729, + 732,735,738,742,747,751,761,765,770,775,780,786,790,794,799,806,810,814, + 817,834,838,842,846,850,853,856,864,869,873,877,881,890,894,899,903,907, + 911,915,917,921,925,927,935,940,944,948,952,957,963,967,980,984,987,990, + 993,997,1001,1004,1007,1011,1015,1021,1025,1029,1033,1039,1043,1047,1051, + 1057,1061,1066,1078,1082,1086,1091,1109,1116,1129,1136,1152,1156,1165, + 1173,1176,1186,1189,1197,1200,1206,1209,1215,1230,1248,1255,1262,1273, + 1296,1305,1311,1315,1320,1329,1333,1338,1344,1350,1356,1360,1364,1370, + 1374,1378,1384,1388,1392,1398,1402,1406,1410,1414,1420,1424,1428,1432, + 1436,1446,1452,1459,1464,1470,1475,1492,1498,1504,1508,1512,1521,1535, + 1540,1545,1549,1554,1560,1565,1568,1572,1576,1580,1586,1590,1595,1600, + 1604,1607,1609,1613,1617,1623,1627,1632,1636,1645,1651,1659,1663,1667, + 1671,1678,1682,1686,1690,1693,1696,1703,1709,1713,1718,1725,1728,1731, + 1736,1740,1744,1749,1753,1762,1766,1771,1785,1787,1789,1794,1804,1810, + 1817,1830,1834,1838,1842,1847,1852,1856,1860,1864,1868,1872,1878,1882, + 1886,1890,1895,1901,1904,1910,1913,1919,1923,1927,1931,1935,1940,1945, + 1949,1954,1957,1966,1975,1980,1993,1996,2004,2008,2013,2018,2022,2027, + 2033,2038,2045,2049,2053,2055,2059,2061,2065,2067,2073,2079,2083,2086, + 2089,2095,2098,2101,2105,2111,2114,2117,2121,2125,2129,2131,2135,2137, + 2141,2143,2147,2149,2155,2159,2163,2167,2171,2175,2179,2183,2187,2190, + 2196,2200,2204,2207,2212,2217,2221,2225,2228,2231,2236,2241,2244,2247, + 2250,2253,2256,2260,2264,2268,2272,2282,2285,2288,2292,2295,2298,2302, + 2306,2310,2314,2318,2322,2324,2327,2331,2335,2339,2343,2345,2351,2354, + 2357,2368,2381,2391,2401,2406,2410,2417,2421,2425,2429,2433,2441,2445, + 2449,2453,2459,2463,2469,2473,2478,2483,2487,2492,2497,2501,2507,2514, + 2518,2524,2531,2535,2541,2548,2552,2557,2565,2568,2573,2582,2586,2589, + 2602,2605,2610,2624,2628,2632,2637,2640,2644,2649,2661,2665,2669,2673, + 2679,2683,2687,2693,2697,2701,2707,2711,2715,2719,2737,2743,2747,2751, + 2755,2758,2764,2767,2771,2775,2779,2783,2787,2794,2797,2801,2807,2811, + 2817,2821,2825,2830,2834,2838,2842,2847,2850,2853,2859,2863,2867,2869, + 2873,2877,2881,2885,2888,2892,2898,2903,2905,2909,2913,2918,2922,2927, + 2931,2935,2939,2943,2948,2952,2957,2961,2965,2969,2973,2976,2979,2982, + 2985,2991,2995,2999,3004,3008,3012,3017,3019,3022,3026,3029,3032,3038, + 3042,3046,3054,3059,3063,3076,3083 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -1471,29 +1483,29 @@ CypherParser::IC_StatementsContext* CypherParser::iC_Statements() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(372); + setState(376); oC_Cypher(); - setState(383); + setState(387); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(374); + setState(378); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(373); + setState(377); match(CypherParser::SP); } - setState(376); + setState(380); match(CypherParser::T__0); - setState(378); + setState(382); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { - setState(377); + setState(381); match(CypherParser::SP); break; } @@ -1501,22 +1513,22 @@ CypherParser::IC_StatementsContext* CypherParser::iC_Statements() { default: break; } - setState(380); + setState(384); oC_Cypher(); } - setState(385); + setState(389); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); } - setState(387); + setState(391); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(386); + setState(390); match(CypherParser::SP); } - setState(389); + setState(393); match(CypherParser::EOF); } @@ -1571,41 +1583,41 @@ CypherParser::OC_CypherContext* CypherParser::oC_Cypher() { }); try { enterOuterAlt(_localctx, 1); - setState(392); + setState(396); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::EXPLAIN || _la == CypherParser::PROFILE) { - setState(391); + setState(395); oC_AnyCypherOption(); } - setState(395); + setState(399); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(394); + setState(398); match(CypherParser::SP); } - setState(397); + setState(401); oC_Statement(); - setState(402); + setState(406); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { case 1: { - setState(399); + setState(403); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(398); + setState(402); match(CypherParser::SP); } - setState(401); + setState(405); match(CypherParser::T__0); break; } @@ -1748,180 +1760,180 @@ CypherParser::OC_StatementContext* CypherParser::oC_Statement() { exitRule(); }); try { - setState(429); + setState(433); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(404); + setState(408); oC_Query(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(405); + setState(409); iC_CreateUser(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(406); + setState(410); iC_CreateRole(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(407); + setState(411); iC_CreateNodeTable(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(408); + setState(412); iC_CreateRelTable(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(409); + setState(413); iC_CreateIndex(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(410); + setState(414); iC_CreateSequence(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(411); + setState(415); iC_CreateType(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(412); + setState(416); iC_Drop(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(413); + setState(417); iC_AlterTable(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(414); + setState(418); iC_CopyFrom(); break; } case 12: { enterOuterAlt(_localctx, 12); - setState(415); + setState(419); iC_CopyFromByColumn(); break; } case 13: { enterOuterAlt(_localctx, 13); - setState(416); + setState(420); iC_CopyTO(); break; } case 14: { enterOuterAlt(_localctx, 14); - setState(417); + setState(421); iC_StandaloneCall(); break; } case 15: { enterOuterAlt(_localctx, 15); - setState(418); + setState(422); iC_CreateMacro(); break; } case 16: { enterOuterAlt(_localctx, 16); - setState(419); + setState(423); iC_CommentOn(); break; } case 17: { enterOuterAlt(_localctx, 17); - setState(420); + setState(424); iC_Transaction(); break; } case 18: { enterOuterAlt(_localctx, 18); - setState(421); + setState(425); iC_Extension(); break; } case 19: { enterOuterAlt(_localctx, 19); - setState(422); + setState(426); iC_ExportDatabase(); break; } case 20: { enterOuterAlt(_localctx, 20); - setState(423); + setState(427); iC_ImportDatabase(); break; } case 21: { enterOuterAlt(_localctx, 21); - setState(424); + setState(428); iC_AttachDatabase(); break; } case 22: { enterOuterAlt(_localctx, 22); - setState(425); + setState(429); iC_DetachDatabase(); break; } case 23: { enterOuterAlt(_localctx, 23); - setState(426); + setState(430); iC_UseDatabase(); break; } case 24: { enterOuterAlt(_localctx, 24); - setState(427); + setState(431); iC_CreateGraph(); break; } case 25: { enterOuterAlt(_localctx, 25); - setState(428); + setState(432); iC_UseGraph(); break; } @@ -1998,18 +2010,18 @@ CypherParser::IC_CopyFromContext* CypherParser::iC_CopyFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(431); + setState(435); match(CypherParser::COPY); - setState(432); + setState(436); match(CypherParser::SP); - setState(433); + setState(437); oC_SchemaName(); - setState(435); + setState(439); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 9, _ctx)) { case 1: { - setState(434); + setState(438); iC_ColumnNames(); break; } @@ -2017,48 +2029,48 @@ CypherParser::IC_CopyFromContext* CypherParser::iC_CopyFrom() { default: break; } - setState(437); + setState(441); match(CypherParser::SP); - setState(438); + setState(442); match(CypherParser::FROM); - setState(439); + setState(443); match(CypherParser::SP); - setState(440); + setState(444); iC_ScanSource(); - setState(454); + setState(458); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { - setState(442); + setState(446); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(441); + setState(445); match(CypherParser::SP); } - setState(444); + setState(448); match(CypherParser::T__1); - setState(446); + setState(450); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(445); + setState(449); match(CypherParser::SP); } - setState(448); + setState(452); iC_Options(); - setState(450); + setState(454); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(449); + setState(453); match(CypherParser::SP); } - setState(452); + setState(456); match(CypherParser::T__2); break; } @@ -2120,25 +2132,25 @@ CypherParser::IC_ColumnNamesContext* CypherParser::iC_ColumnNames() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(457); + setState(461); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(456); + setState(460); match(CypherParser::SP); } - setState(459); + setState(463); match(CypherParser::T__1); - setState(461); + setState(465); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(460); + setState(464); match(CypherParser::SP); } - setState(480); + setState(484); _errHandler->sync(this); _la = _input->LA(1); @@ -2146,48 +2158,48 @@ CypherParser::IC_ColumnNamesContext* CypherParser::iC_ColumnNames() { ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(463); + setState(467); oC_SchemaName(); - setState(474); + setState(478); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 18, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(465); + setState(469); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(464); + setState(468); match(CypherParser::SP); } - setState(467); + setState(471); match(CypherParser::T__3); - setState(469); + setState(473); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(468); + setState(472); match(CypherParser::SP); } - setState(471); + setState(475); oC_SchemaName(); } - setState(476); + setState(480); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 18, _ctx); } - setState(478); + setState(482); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(477); + setState(481); match(CypherParser::SP); } } - setState(482); + setState(486); match(CypherParser::T__2); } @@ -2257,79 +2269,79 @@ CypherParser::IC_ScanSourceContext* CypherParser::iC_ScanSource() { exitRule(); }); try { - setState(505); + setState(509); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 24, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(484); + setState(488); iC_FilePaths(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(485); + setState(489); match(CypherParser::T__1); - setState(487); + setState(491); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(486); + setState(490); match(CypherParser::SP); } - setState(489); + setState(493); oC_Query(); - setState(491); + setState(495); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(490); + setState(494); match(CypherParser::SP); } - setState(493); + setState(497); match(CypherParser::T__2); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(495); + setState(499); oC_Parameter(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(496); + setState(500); oC_Variable(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(497); + setState(501); oC_Variable(); - setState(498); + setState(502); match(CypherParser::T__4); - setState(500); + setState(504); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(499); + setState(503); match(CypherParser::SP); } - setState(502); + setState(506); oC_SchemaName(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(504); + setState(508); oC_FunctionInvocation(); break; } @@ -2410,67 +2422,67 @@ CypherParser::IC_CopyFromByColumnContext* CypherParser::iC_CopyFromByColumn() { }); try { enterOuterAlt(_localctx, 1); - setState(507); + setState(511); match(CypherParser::COPY); - setState(508); + setState(512); match(CypherParser::SP); - setState(509); + setState(513); oC_SchemaName(); - setState(510); + setState(514); match(CypherParser::SP); - setState(511); + setState(515); match(CypherParser::FROM); - setState(512); + setState(516); match(CypherParser::SP); - setState(513); + setState(517); match(CypherParser::T__1); - setState(515); + setState(519); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(514); + setState(518); match(CypherParser::SP); } - setState(517); + setState(521); match(CypherParser::StringLiteral); - setState(528); + setState(532); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3 || _la == CypherParser::SP) { - setState(519); + setState(523); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(518); + setState(522); match(CypherParser::SP); } - setState(521); + setState(525); match(CypherParser::T__3); - setState(523); + setState(527); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(522); + setState(526); match(CypherParser::SP); } - setState(525); + setState(529); match(CypherParser::StringLiteral); - setState(530); + setState(534); _errHandler->sync(this); _la = _input->LA(1); } - setState(531); + setState(535); match(CypherParser::T__2); - setState(532); + setState(536); match(CypherParser::SP); - setState(533); + setState(537); match(CypherParser::BY); - setState(534); + setState(538); match(CypherParser::SP); - setState(535); + setState(539); match(CypherParser::COLUMN); } @@ -2537,74 +2549,74 @@ CypherParser::IC_CopyTOContext* CypherParser::iC_CopyTO() { }); try { enterOuterAlt(_localctx, 1); - setState(537); + setState(541); match(CypherParser::COPY); - setState(538); + setState(542); match(CypherParser::SP); - setState(539); + setState(543); match(CypherParser::T__1); - setState(541); + setState(545); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(540); + setState(544); match(CypherParser::SP); } - setState(543); + setState(547); oC_Query(); - setState(545); + setState(549); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(544); + setState(548); match(CypherParser::SP); } - setState(547); + setState(551); match(CypherParser::T__2); - setState(548); + setState(552); match(CypherParser::SP); - setState(549); + setState(553); match(CypherParser::TO); - setState(550); + setState(554); match(CypherParser::SP); - setState(551); + setState(555); match(CypherParser::StringLiteral); - setState(565); + setState(569); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 34, _ctx)) { case 1: { - setState(553); + setState(557); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(552); + setState(556); match(CypherParser::SP); } - setState(555); + setState(559); match(CypherParser::T__1); - setState(557); + setState(561); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(556); + setState(560); match(CypherParser::SP); } - setState(559); + setState(563); iC_Options(); - setState(561); + setState(565); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(560); + setState(564); match(CypherParser::SP); } - setState(563); + setState(567); match(CypherParser::T__2); break; } @@ -2673,50 +2685,50 @@ CypherParser::IC_ExportDatabaseContext* CypherParser::iC_ExportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(567); + setState(571); match(CypherParser::EXPORT); - setState(568); + setState(572); match(CypherParser::SP); - setState(569); + setState(573); match(CypherParser::DATABASE); - setState(570); + setState(574); match(CypherParser::SP); - setState(571); + setState(575); match(CypherParser::StringLiteral); - setState(585); + setState(589); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 38, _ctx)) { case 1: { - setState(573); + setState(577); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(572); + setState(576); match(CypherParser::SP); } - setState(575); + setState(579); match(CypherParser::T__1); - setState(577); + setState(581); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(576); + setState(580); match(CypherParser::SP); } - setState(579); + setState(583); iC_Options(); - setState(581); + setState(585); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(580); + setState(584); match(CypherParser::SP); } - setState(583); + setState(587); match(CypherParser::T__2); break; } @@ -2780,15 +2792,15 @@ CypherParser::IC_ImportDatabaseContext* CypherParser::iC_ImportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(587); + setState(591); match(CypherParser::IMPORT); - setState(588); + setState(592); match(CypherParser::SP); - setState(589); + setState(593); match(CypherParser::DATABASE); - setState(590); + setState(594); match(CypherParser::SP); - setState(591); + setState(595); match(CypherParser::StringLiteral); } @@ -2863,24 +2875,24 @@ CypherParser::IC_AttachDatabaseContext* CypherParser::iC_AttachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(593); + setState(597); match(CypherParser::ATTACH); - setState(594); + setState(598); match(CypherParser::SP); - setState(595); + setState(599); match(CypherParser::StringLiteral); - setState(600); + setState(604); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 39, _ctx)) { case 1: { - setState(596); + setState(600); match(CypherParser::SP); - setState(597); + setState(601); match(CypherParser::AS); - setState(598); + setState(602); match(CypherParser::SP); - setState(599); + setState(603); oC_SchemaName(); break; } @@ -2888,48 +2900,48 @@ CypherParser::IC_AttachDatabaseContext* CypherParser::iC_AttachDatabase() { default: break; } - setState(602); + setState(606); match(CypherParser::SP); - setState(603); + setState(607); match(CypherParser::T__1); - setState(605); + setState(609); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(604); + setState(608); match(CypherParser::SP); } - setState(607); + setState(611); match(CypherParser::DBTYPE); - setState(608); + setState(612); match(CypherParser::SP); - setState(609); + setState(613); oC_SymbolicName(); - setState(618); + setState(622); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { - setState(611); + setState(615); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(610); + setState(614); match(CypherParser::SP); } - setState(613); + setState(617); match(CypherParser::T__3); - setState(615); + setState(619); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(614); + setState(618); match(CypherParser::SP); } - setState(617); + setState(621); iC_Options(); break; } @@ -2937,15 +2949,15 @@ CypherParser::IC_AttachDatabaseContext* CypherParser::iC_AttachDatabase() { default: break; } - setState(621); + setState(625); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(620); + setState(624); match(CypherParser::SP); } - setState(623); + setState(627); match(CypherParser::T__2); } @@ -2999,46 +3011,46 @@ CypherParser::IC_OptionContext* CypherParser::iC_Option() { exitRule(); }); try { - setState(644); + setState(648); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(625); + setState(629); oC_SymbolicName(); - setState(639); + setState(643); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 48, _ctx)) { case 1: { - setState(627); + setState(631); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(626); + setState(630); match(CypherParser::SP); } - setState(629); + setState(633); match(CypherParser::T__5); - setState(631); + setState(635); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(630); + setState(634); match(CypherParser::SP); } break; } case 2: { - setState(636); + setState(640); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::SP) { - setState(633); + setState(637); match(CypherParser::SP); - setState(638); + setState(642); _errHandler->sync(this); _la = _input->LA(1); } @@ -3048,14 +3060,14 @@ CypherParser::IC_OptionContext* CypherParser::iC_Option() { default: break; } - setState(641); + setState(645); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(643); + setState(647); oC_SymbolicName(); break; } @@ -3117,35 +3129,35 @@ CypherParser::IC_OptionsContext* CypherParser::iC_Options() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(646); + setState(650); iC_Option(); - setState(657); + setState(661); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(648); + setState(652); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(647); + setState(651); match(CypherParser::SP); } - setState(650); + setState(654); match(CypherParser::T__3); - setState(652); + setState(656); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(651); + setState(655); match(CypherParser::SP); } - setState(654); + setState(658); iC_Option(); } - setState(659); + setState(663); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); } @@ -3197,11 +3209,11 @@ CypherParser::IC_DetachDatabaseContext* CypherParser::iC_DetachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(660); + setState(664); match(CypherParser::DETACH); - setState(661); + setState(665); match(CypherParser::SP); - setState(662); + setState(666); oC_SchemaName(); } @@ -3251,11 +3263,11 @@ CypherParser::IC_UseDatabaseContext* CypherParser::iC_UseDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(664); + setState(668); match(CypherParser::USE); - setState(665); + setState(669); match(CypherParser::SP); - setState(666); + setState(670); oC_SchemaName(); } @@ -3317,24 +3329,24 @@ CypherParser::IC_CreateGraphContext* CypherParser::iC_CreateGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(668); + setState(672); match(CypherParser::CREATE); - setState(669); + setState(673); match(CypherParser::SP); - setState(670); + setState(674); match(CypherParser::GRAPH); - setState(671); + setState(675); match(CypherParser::SP); - setState(672); + setState(676); oC_SchemaName(); - setState(675); + setState(679); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 53, _ctx)) { case 1: { - setState(673); + setState(677); match(CypherParser::SP); - setState(674); + setState(678); match(CypherParser::ANY); break; } @@ -3398,15 +3410,15 @@ CypherParser::IC_UseGraphContext* CypherParser::iC_UseGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(677); + setState(681); match(CypherParser::USE); - setState(678); + setState(682); match(CypherParser::SP); - setState(679); + setState(683); match(CypherParser::GRAPH); - setState(680); + setState(684); match(CypherParser::SP); - setState(681); + setState(685); oC_SchemaName(); } @@ -3468,47 +3480,47 @@ CypherParser::IC_StandaloneCallContext* CypherParser::iC_StandaloneCall() { exitRule(); }); try { - setState(698); + setState(702); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 56, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(683); + setState(687); match(CypherParser::CALL); - setState(684); + setState(688); match(CypherParser::SP); - setState(685); + setState(689); oC_SymbolicName(); - setState(687); + setState(691); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(686); + setState(690); match(CypherParser::SP); } - setState(689); + setState(693); match(CypherParser::T__5); - setState(691); + setState(695); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(690); + setState(694); match(CypherParser::SP); } - setState(693); + setState(697); oC_Expression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(695); + setState(699); match(CypherParser::CALL); - setState(696); + setState(700); match(CypherParser::SP); - setState(697); + setState(701); oC_FunctionInvocation(); break; } @@ -3584,29 +3596,29 @@ CypherParser::IC_CommentOnContext* CypherParser::iC_CommentOn() { }); try { enterOuterAlt(_localctx, 1); - setState(700); - match(CypherParser::COMMENT); - setState(701); - match(CypherParser::SP); - setState(702); - match(CypherParser::ON); - setState(703); - match(CypherParser::SP); setState(704); - match(CypherParser::TABLE); + match(CypherParser::COMMENT); setState(705); match(CypherParser::SP); setState(706); - oC_SchemaName(); + match(CypherParser::ON); setState(707); match(CypherParser::SP); setState(708); - match(CypherParser::IS); + match(CypherParser::TABLE); setState(709); match(CypherParser::SP); setState(710); - match(CypherParser::StringLiteral); - + oC_SchemaName(); + setState(711); + match(CypherParser::SP); + setState(712); + match(CypherParser::IS); + setState(713); + match(CypherParser::SP); + setState(714); + match(CypherParser::StringLiteral); + } catch (RecognitionException &e) { _errHandler->reportError(this, e); @@ -3684,32 +3696,32 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(712); + setState(716); match(CypherParser::CREATE); - setState(713); + setState(717); match(CypherParser::SP); - setState(714); + setState(718); match(CypherParser::MACRO); - setState(715); + setState(719); match(CypherParser::SP); - setState(716); + setState(720); oC_FunctionName(); - setState(718); + setState(722); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(717); + setState(721); match(CypherParser::SP); } - setState(720); + setState(724); match(CypherParser::T__1); - setState(722); + setState(726); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 58, _ctx)) { case 1: { - setState(721); + setState(725); match(CypherParser::SP); break; } @@ -3717,12 +3729,12 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { default: break; } - setState(725); + setState(729); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 59, _ctx)) { case 1: { - setState(724); + setState(728); iC_PositionalArgs(); break; } @@ -3730,12 +3742,12 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { default: break; } - setState(728); + setState(732); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 60, _ctx)) { case 1: { - setState(727); + setState(731); match(CypherParser::SP); break; } @@ -3743,7 +3755,7 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { default: break; } - setState(731); + setState(735); _errHandler->sync(this); _la = _input->LA(1); @@ -3751,56 +3763,56 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(730); + setState(734); iC_DefaultArg(); } - setState(743); + setState(747); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(734); + setState(738); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(733); + setState(737); match(CypherParser::SP); } - setState(736); + setState(740); match(CypherParser::T__3); - setState(738); + setState(742); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(737); + setState(741); match(CypherParser::SP); } - setState(740); + setState(744); iC_DefaultArg(); } - setState(745); + setState(749); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); } - setState(747); + setState(751); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(746); + setState(750); match(CypherParser::SP); } - setState(749); + setState(753); match(CypherParser::T__2); - setState(750); + setState(754); match(CypherParser::SP); - setState(751); + setState(755); match(CypherParser::AS); - setState(752); + setState(756); match(CypherParser::SP); - setState(753); + setState(757); oC_Expression(); } @@ -3856,35 +3868,35 @@ CypherParser::IC_PositionalArgsContext* CypherParser::iC_PositionalArgs() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(755); + setState(759); oC_SymbolicName(); - setState(766); + setState(770); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(757); + setState(761); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(756); + setState(760); match(CypherParser::SP); } - setState(759); + setState(763); match(CypherParser::T__3); - setState(761); + setState(765); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(760); + setState(764); match(CypherParser::SP); } - setState(763); + setState(767); oC_SymbolicName(); } - setState(768); + setState(772); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); } @@ -3945,29 +3957,29 @@ CypherParser::IC_DefaultArgContext* CypherParser::iC_DefaultArg() { }); try { enterOuterAlt(_localctx, 1); - setState(769); + setState(773); oC_SymbolicName(); - setState(771); + setState(775); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(770); + setState(774); match(CypherParser::SP); } - setState(773); + setState(777); match(CypherParser::COLON); - setState(774); + setState(778); match(CypherParser::T__5); - setState(776); + setState(780); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(775); + setState(779); match(CypherParser::SP); } - setState(778); + setState(782); oC_Literal(); } @@ -4025,96 +4037,96 @@ CypherParser::IC_FilePathsContext* CypherParser::iC_FilePaths() { exitRule(); }); try { - setState(813); + setState(817); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__6: { enterOuterAlt(_localctx, 1); - setState(780); + setState(784); match(CypherParser::T__6); - setState(782); + setState(786); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(781); + setState(785); match(CypherParser::SP); } - setState(784); + setState(788); match(CypherParser::StringLiteral); - setState(795); + setState(799); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3 || _la == CypherParser::SP) { - setState(786); + setState(790); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(785); + setState(789); match(CypherParser::SP); } - setState(788); + setState(792); match(CypherParser::T__3); - setState(790); + setState(794); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(789); + setState(793); match(CypherParser::SP); } - setState(792); + setState(796); match(CypherParser::StringLiteral); - setState(797); + setState(801); _errHandler->sync(this); _la = _input->LA(1); } - setState(798); + setState(802); match(CypherParser::T__7); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(799); + setState(803); match(CypherParser::StringLiteral); break; } case CypherParser::GLOB: { enterOuterAlt(_localctx, 3); - setState(800); + setState(804); match(CypherParser::GLOB); - setState(802); + setState(806); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(801); + setState(805); match(CypherParser::SP); } - setState(804); + setState(808); match(CypherParser::T__1); - setState(806); + setState(810); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(805); + setState(809); match(CypherParser::SP); } - setState(808); + setState(812); match(CypherParser::StringLiteral); - setState(810); + setState(814); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(809); + setState(813); match(CypherParser::SP); } - setState(812); + setState(816); match(CypherParser::T__2); break; } @@ -4178,15 +4190,15 @@ CypherParser::IC_IfNotExistsContext* CypherParser::iC_IfNotExists() { }); try { enterOuterAlt(_localctx, 1); - setState(815); + setState(819); match(CypherParser::IF); - setState(816); + setState(820); match(CypherParser::SP); - setState(817); + setState(821); match(CypherParser::NOT); - setState(818); + setState(822); match(CypherParser::SP); - setState(819); + setState(823); match(CypherParser::EXISTS); } @@ -4277,26 +4289,26 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { }); try { enterOuterAlt(_localctx, 1); - setState(821); + setState(825); match(CypherParser::CREATE); - setState(822); + setState(826); match(CypherParser::SP); - setState(823); + setState(827); match(CypherParser::NODE); - setState(824); + setState(828); match(CypherParser::SP); - setState(825); + setState(829); match(CypherParser::TABLE); - setState(826); - match(CypherParser::SP); setState(830); + match(CypherParser::SP); + setState(834); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) { case 1: { - setState(827); + setState(831); iC_IfNotExists(); - setState(828); + setState(832); match(CypherParser::SP); break; } @@ -4304,38 +4316,38 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { default: break; } - setState(832); + setState(836); oC_SchemaName(); - setState(860); + setState(864); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 86, _ctx)) { case 1: { - setState(834); + setState(838); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(833); + setState(837); match(CypherParser::SP); } - setState(836); + setState(840); match(CypherParser::T__1); - setState(838); + setState(842); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(837); + setState(841); match(CypherParser::SP); } - setState(840); + setState(844); iC_PropertyDefinitions(); - setState(842); + setState(846); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 82, _ctx)) { case 1: { - setState(841); + setState(845); match(CypherParser::SP); break; } @@ -4343,45 +4355,45 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { default: break; } - setState(849); + setState(853); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__3) { - setState(844); + setState(848); match(CypherParser::T__3); - setState(846); + setState(850); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(845); + setState(849); match(CypherParser::SP); } - setState(848); + setState(852); iC_CreateNodeConstraint(); } - setState(852); + setState(856); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(851); + setState(855); match(CypherParser::SP); } - setState(854); + setState(858); match(CypherParser::T__2); break; } case 2: { - setState(856); + setState(860); match(CypherParser::SP); - setState(857); + setState(861); match(CypherParser::AS); - setState(858); + setState(862); match(CypherParser::SP); - setState(859); + setState(863); oC_Query(); break; } @@ -4389,44 +4401,44 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { default: break; } - setState(877); + setState(881); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 90, _ctx)) { case 1: { - setState(862); + setState(866); match(CypherParser::SP); - setState(863); + setState(867); match(CypherParser::WITH); - setState(865); + setState(869); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(864); + setState(868); match(CypherParser::SP); } - setState(867); + setState(871); match(CypherParser::T__1); - setState(869); + setState(873); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(868); + setState(872); match(CypherParser::SP); } - setState(871); + setState(875); iC_Options(); - setState(873); + setState(877); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(872); + setState(876); match(CypherParser::SP); } - setState(875); + setState(879); match(CypherParser::T__2); break; } @@ -4475,8 +4487,8 @@ CypherParser::OC_SchemaNameContext* CypherParser::IC_CreateRelTableContext::oC_S return getRuleContext(0); } -CypherParser::IC_FromToConnectionsContext* CypherParser::IC_CreateRelTableContext::iC_FromToConnections() { - return getRuleContext(0); +CypherParser::IC_CreateFromToConnectionsContext* CypherParser::IC_CreateRelTableContext::iC_CreateFromToConnections() { + return getRuleContext(0); } tree::TerminalNode* CypherParser::IC_CreateRelTableContext::AS() { @@ -4531,24 +4543,24 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { }); try { enterOuterAlt(_localctx, 1); - setState(879); + setState(883); match(CypherParser::CREATE); - setState(880); + setState(884); match(CypherParser::SP); - setState(881); + setState(885); match(CypherParser::REL); - setState(882); + setState(886); match(CypherParser::SP); - setState(883); + setState(887); match(CypherParser::TABLE); - setState(886); + setState(890); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 91, _ctx)) { case 1: { - setState(884); + setState(888); match(CypherParser::SP); - setState(885); + setState(889); match(CypherParser::GROUP); break; } @@ -4556,14 +4568,14 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(890); + setState(894); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 92, _ctx)) { case 1: { - setState(888); + setState(892); match(CypherParser::SP); - setState(889); + setState(893); iC_IfNotExists(); break; } @@ -4571,65 +4583,65 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(892); + setState(896); match(CypherParser::SP); - setState(893); + setState(897); oC_SchemaName(); - setState(895); + setState(899); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(894); + setState(898); match(CypherParser::SP); } - setState(897); + setState(901); match(CypherParser::T__1); - setState(899); + setState(903); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(898); + setState(902); match(CypherParser::SP); } - setState(901); - iC_FromToConnections(); - setState(903); + setState(905); + iC_CreateFromToConnections(); + setState(907); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(902); + setState(906); match(CypherParser::SP); } - setState(931); + setState(935); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 102, _ctx)) { case 1: { - setState(913); + setState(917); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 98, _ctx)) { case 1: { - setState(905); + setState(909); match(CypherParser::T__3); - setState(907); + setState(911); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(906); + setState(910); match(CypherParser::SP); } - setState(909); + setState(913); iC_PropertyDefinitions(); - setState(911); + setState(915); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(910); + setState(914); match(CypherParser::SP); } break; @@ -4638,47 +4650,47 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(923); + setState(927); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__3) { - setState(915); + setState(919); match(CypherParser::T__3); - setState(917); + setState(921); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(916); + setState(920); match(CypherParser::SP); } - setState(919); + setState(923); oC_SymbolicName(); - setState(921); + setState(925); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(920); + setState(924); match(CypherParser::SP); } } - setState(925); + setState(929); match(CypherParser::T__2); break; } case 2: { - setState(926); + setState(930); match(CypherParser::T__2); - setState(927); + setState(931); match(CypherParser::SP); - setState(928); + setState(932); match(CypherParser::AS); - setState(929); + setState(933); match(CypherParser::SP); - setState(930); + setState(934); oC_Query(); break; } @@ -4686,44 +4698,44 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(948); + setState(952); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 106, _ctx)) { case 1: { - setState(933); + setState(937); match(CypherParser::SP); - setState(934); + setState(938); match(CypherParser::WITH); - setState(936); + setState(940); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(935); + setState(939); match(CypherParser::SP); } - setState(938); + setState(942); match(CypherParser::T__1); - setState(940); + setState(944); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(939); + setState(943); match(CypherParser::SP); } - setState(942); + setState(946); iC_Options(); - setState(944); + setState(948); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(943); + setState(947); match(CypherParser::SP); } - setState(946); + setState(950); match(CypherParser::T__2); break; } @@ -4820,16 +4832,16 @@ CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { }); try { enterOuterAlt(_localctx, 1); - setState(950); + setState(954); match(CypherParser::CREATE); - setState(953); + setState(957); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 107, _ctx)) { case 1: { - setState(951); + setState(955); match(CypherParser::SP); - setState(952); + setState(956); oC_SymbolicName(); break; } @@ -4837,18 +4849,18 @@ CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { default: break; } - setState(955); + setState(959); match(CypherParser::SP); - setState(956); + setState(960); match(CypherParser::INDEX); - setState(959); + setState(963); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 108, _ctx)) { case 1: { - setState(957); + setState(961); match(CypherParser::SP); - setState(958); + setState(962); oC_SchemaName(); break; } @@ -4856,14 +4868,14 @@ CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { default: break; } - setState(963); + setState(967); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 109, _ctx)) { case 1: { - setState(961); + setState(965); match(CypherParser::SP); - setState(962); + setState(966); iC_IfNotExists(); break; } @@ -4871,47 +4883,47 @@ CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { default: break; } - setState(965); + setState(969); match(CypherParser::SP); - setState(966); + setState(970); match(CypherParser::FOR); - setState(967); + setState(971); match(CypherParser::SP); - setState(968); + setState(972); iC_IndexPattern(); - setState(969); + setState(973); match(CypherParser::SP); - setState(970); + setState(974); match(CypherParser::ON); - setState(971); + setState(975); match(CypherParser::SP); - setState(972); + setState(976); iC_IndexPropertyPattern(); - setState(989); + setState(993); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 114, _ctx)) { case 1: { - setState(973); + setState(977); match(CypherParser::SP); - setState(974); + setState(978); match(CypherParser::OPTIONS); - setState(976); + setState(980); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(975); + setState(979); match(CypherParser::SP); } - setState(978); + setState(982); match(CypherParser::T__8); - setState(980); + setState(984); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 111, _ctx)) { case 1: { - setState(979); + setState(983); match(CypherParser::SP); break; } @@ -4919,7 +4931,7 @@ CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { default: break; } - setState(983); + setState(987); _errHandler->sync(this); _la = _input->LA(1); @@ -4927,18 +4939,18 @@ CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(982); + setState(986); iC_Options(); } - setState(986); + setState(990); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(985); + setState(989); match(CypherParser::SP); } - setState(988); + setState(992); match(CypherParser::T__9); break; } @@ -4989,19 +5001,19 @@ CypherParser::IC_IndexPatternContext* CypherParser::iC_IndexPattern() { exitRule(); }); try { - setState(993); + setState(997); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 115, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(991); + setState(995); iC_IndexNodePattern(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(992); + setState(996); iC_IndexRelationshipPattern(); break; } @@ -5066,14 +5078,14 @@ CypherParser::IC_IndexNodePatternContext* CypherParser::iC_IndexNodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(995); + setState(999); match(CypherParser::T__1); - setState(997); + setState(1001); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 116, _ctx)) { case 1: { - setState(996); + setState(1000); match(CypherParser::SP); break; } @@ -5081,7 +5093,7 @@ CypherParser::IC_IndexNodePatternContext* CypherParser::iC_IndexNodePattern() { default: break; } - setState(1000); + setState(1004); _errHandler->sync(this); _la = _input->LA(1); @@ -5089,38 +5101,38 @@ CypherParser::IC_IndexNodePatternContext* CypherParser::iC_IndexNodePattern() { ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(999); + setState(1003); oC_Variable(); } - setState(1003); + setState(1007); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1002); + setState(1006); match(CypherParser::SP); } - setState(1005); + setState(1009); match(CypherParser::COLON); - setState(1007); + setState(1011); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1006); + setState(1010); match(CypherParser::SP); } - setState(1009); + setState(1013); oC_LabelName(); - setState(1011); + setState(1015); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1010); + setState(1014); match(CypherParser::SP); } - setState(1013); + setState(1017); match(CypherParser::T__2); } @@ -5171,18 +5183,8 @@ CypherParser::IC_IndexRelationshipPatternContext* CypherParser::iC_IndexRelation }); try { enterOuterAlt(_localctx, 1); - setState(1015); - match(CypherParser::T__1); - setState(1017); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1016); - match(CypherParser::SP); - } setState(1019); - match(CypherParser::T__2); + match(CypherParser::T__1); setState(1021); _errHandler->sync(this); @@ -5192,7 +5194,7 @@ CypherParser::IC_IndexRelationshipPatternContext* CypherParser::iC_IndexRelation match(CypherParser::SP); } setState(1023); - oC_RelationshipPattern(); + match(CypherParser::T__2); setState(1025); _errHandler->sync(this); @@ -5202,7 +5204,7 @@ CypherParser::IC_IndexRelationshipPatternContext* CypherParser::iC_IndexRelation match(CypherParser::SP); } setState(1027); - match(CypherParser::T__1); + oC_RelationshipPattern(); setState(1029); _errHandler->sync(this); @@ -5212,6 +5214,16 @@ CypherParser::IC_IndexRelationshipPatternContext* CypherParser::iC_IndexRelation match(CypherParser::SP); } setState(1031); + match(CypherParser::T__1); + setState(1033); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1032); + match(CypherParser::SP); + } + setState(1035); match(CypherParser::T__2); } @@ -5266,18 +5278,8 @@ CypherParser::IC_IndexPropertyPatternContext* CypherParser::iC_IndexPropertyPatt }); try { enterOuterAlt(_localctx, 1); - setState(1033); - match(CypherParser::T__1); - setState(1035); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1034); - match(CypherParser::SP); - } setState(1037); - oC_Variable(); + match(CypherParser::T__1); setState(1039); _errHandler->sync(this); @@ -5287,7 +5289,7 @@ CypherParser::IC_IndexPropertyPatternContext* CypherParser::iC_IndexPropertyPatt match(CypherParser::SP); } setState(1041); - match(CypherParser::T__4); + oC_Variable(); setState(1043); _errHandler->sync(this); @@ -5297,7 +5299,7 @@ CypherParser::IC_IndexPropertyPatternContext* CypherParser::iC_IndexPropertyPatt match(CypherParser::SP); } setState(1045); - oC_PropertyKeyName(); + match(CypherParser::T__4); setState(1047); _errHandler->sync(this); @@ -5307,6 +5309,16 @@ CypherParser::IC_IndexPropertyPatternContext* CypherParser::iC_IndexPropertyPatt match(CypherParser::SP); } setState(1049); + oC_PropertyKeyName(); + setState(1051); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1050); + match(CypherParser::SP); + } + setState(1053); match(CypherParser::T__2); } @@ -5319,37 +5331,37 @@ CypherParser::IC_IndexPropertyPatternContext* CypherParser::iC_IndexPropertyPatt return _localctx; } -//----------------- IC_FromToConnectionsContext ------------------------------------------------------------------ +//----------------- IC_CreateFromToConnectionsContext ------------------------------------------------------------------ -CypherParser::IC_FromToConnectionsContext::IC_FromToConnectionsContext(ParserRuleContext *parent, size_t invokingState) +CypherParser::IC_CreateFromToConnectionsContext::IC_CreateFromToConnectionsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector CypherParser::IC_FromToConnectionsContext::iC_FromToConnection() { - return getRuleContexts(); +std::vector CypherParser::IC_CreateFromToConnectionsContext::iC_CreateFromToConnection() { + return getRuleContexts(); } -CypherParser::IC_FromToConnectionContext* CypherParser::IC_FromToConnectionsContext::iC_FromToConnection(size_t i) { - return getRuleContext(i); +CypherParser::IC_CreateFromToConnectionContext* CypherParser::IC_CreateFromToConnectionsContext::iC_CreateFromToConnection(size_t i) { + return getRuleContext(i); } -std::vector CypherParser::IC_FromToConnectionsContext::SP() { +std::vector CypherParser::IC_CreateFromToConnectionsContext::SP() { return getTokens(CypherParser::SP); } -tree::TerminalNode* CypherParser::IC_FromToConnectionsContext::SP(size_t i) { +tree::TerminalNode* CypherParser::IC_CreateFromToConnectionsContext::SP(size_t i) { return getToken(CypherParser::SP, i); } -size_t CypherParser::IC_FromToConnectionsContext::getRuleIndex() const { - return CypherParser::RuleIC_FromToConnections; +size_t CypherParser::IC_CreateFromToConnectionsContext::getRuleIndex() const { + return CypherParser::RuleIC_CreateFromToConnections; } -CypherParser::IC_FromToConnectionsContext* CypherParser::iC_FromToConnections() { - IC_FromToConnectionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, CypherParser::RuleIC_FromToConnections); +CypherParser::IC_CreateFromToConnectionsContext* CypherParser::iC_CreateFromToConnections() { + IC_CreateFromToConnectionsContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 62, CypherParser::RuleIC_CreateFromToConnections); size_t _la = 0; #if __cplusplus > 201703L @@ -5362,35 +5374,35 @@ CypherParser::IC_FromToConnectionsContext* CypherParser::iC_FromToConnections() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1051); - iC_FromToConnection(); - setState(1062); + setState(1055); + iC_CreateFromToConnection(); + setState(1066); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 131, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1053); + setState(1057); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1052); + setState(1056); match(CypherParser::SP); } - setState(1055); + setState(1059); match(CypherParser::T__3); - setState(1057); + setState(1061); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1056); + setState(1060); match(CypherParser::SP); } - setState(1059); - iC_FromToConnection(); + setState(1063); + iC_CreateFromToConnection(); } - setState(1064); + setState(1068); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 131, _ctx); } @@ -5405,6 +5417,182 @@ CypherParser::IC_FromToConnectionsContext* CypherParser::iC_FromToConnections() return _localctx; } +//----------------- IC_CreateFromToConnectionContext ------------------------------------------------------------------ + +CypherParser::IC_CreateFromToConnectionContext::IC_CreateFromToConnectionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* CypherParser::IC_CreateFromToConnectionContext::FROM() { + return getToken(CypherParser::FROM, 0); +} + +std::vector CypherParser::IC_CreateFromToConnectionContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::IC_CreateFromToConnectionContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + +std::vector CypherParser::IC_CreateFromToConnectionContext::oC_SchemaName() { + return getRuleContexts(); +} + +CypherParser::OC_SchemaNameContext* CypherParser::IC_CreateFromToConnectionContext::oC_SchemaName(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* CypherParser::IC_CreateFromToConnectionContext::TO() { + return getToken(CypherParser::TO, 0); +} + +CypherParser::OC_SymbolicNameContext* CypherParser::IC_CreateFromToConnectionContext::oC_SymbolicName() { + return getRuleContext(0); +} + + +size_t CypherParser::IC_CreateFromToConnectionContext::getRuleIndex() const { + return CypherParser::RuleIC_CreateFromToConnection; +} + + +CypherParser::IC_CreateFromToConnectionContext* CypherParser::iC_CreateFromToConnection() { + IC_CreateFromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 64, CypherParser::RuleIC_CreateFromToConnection); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1069); + match(CypherParser::FROM); + setState(1070); + match(CypherParser::SP); + setState(1071); + oC_SchemaName(); + setState(1072); + match(CypherParser::SP); + setState(1073); + match(CypherParser::TO); + setState(1074); + match(CypherParser::SP); + setState(1075); + oC_SchemaName(); + setState(1078); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 132, _ctx)) { + case 1: { + setState(1076); + match(CypherParser::SP); + setState(1077); + oC_SymbolicName(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IC_FromToConnectionsContext ------------------------------------------------------------------ + +CypherParser::IC_FromToConnectionsContext::IC_FromToConnectionsContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector CypherParser::IC_FromToConnectionsContext::iC_FromToConnection() { + return getRuleContexts(); +} + +CypherParser::IC_FromToConnectionContext* CypherParser::IC_FromToConnectionsContext::iC_FromToConnection(size_t i) { + return getRuleContext(i); +} + +std::vector CypherParser::IC_FromToConnectionsContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::IC_FromToConnectionsContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + + +size_t CypherParser::IC_FromToConnectionsContext::getRuleIndex() const { + return CypherParser::RuleIC_FromToConnections; +} + + +CypherParser::IC_FromToConnectionsContext* CypherParser::iC_FromToConnections() { + IC_FromToConnectionsContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 66, CypherParser::RuleIC_FromToConnections); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1080); + iC_FromToConnection(); + setState(1091); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == CypherParser::T__3 || _la == CypherParser::SP) { + setState(1082); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1081); + match(CypherParser::SP); + } + setState(1084); + match(CypherParser::T__3); + setState(1086); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1085); + match(CypherParser::SP); + } + setState(1088); + iC_FromToConnection(); + setState(1093); + _errHandler->sync(this); + _la = _input->LA(1); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + //----------------- IC_FromToConnectionContext ------------------------------------------------------------------ CypherParser::IC_FromToConnectionContext::IC_FromToConnectionContext(ParserRuleContext *parent, size_t invokingState) @@ -5443,7 +5631,7 @@ size_t CypherParser::IC_FromToConnectionContext::getRuleIndex() const { CypherParser::IC_FromToConnectionContext* CypherParser::iC_FromToConnection() { IC_FromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, CypherParser::RuleIC_FromToConnection); + enterRule(_localctx, 68, CypherParser::RuleIC_FromToConnection); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5454,19 +5642,19 @@ CypherParser::IC_FromToConnectionContext* CypherParser::iC_FromToConnection() { }); try { enterOuterAlt(_localctx, 1); - setState(1065); + setState(1094); match(CypherParser::FROM); - setState(1066); + setState(1095); match(CypherParser::SP); - setState(1067); + setState(1096); oC_SchemaName(); - setState(1068); + setState(1097); match(CypherParser::SP); - setState(1069); + setState(1098); match(CypherParser::TO); - setState(1070); + setState(1099); match(CypherParser::SP); - setState(1071); + setState(1100); oC_SchemaName(); } @@ -5525,7 +5713,7 @@ size_t CypherParser::IC_CreateSequenceContext::getRuleIndex() const { CypherParser::IC_CreateSequenceContext* CypherParser::iC_CreateSequence() { IC_CreateSequenceContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, CypherParser::RuleIC_CreateSequence); + enterRule(_localctx, 70, CypherParser::RuleIC_CreateSequence); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5537,22 +5725,22 @@ CypherParser::IC_CreateSequenceContext* CypherParser::iC_CreateSequence() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1073); + setState(1102); match(CypherParser::CREATE); - setState(1074); + setState(1103); match(CypherParser::SP); - setState(1075); + setState(1104); match(CypherParser::SEQUENCE); - setState(1076); + setState(1105); match(CypherParser::SP); - setState(1080); + setState(1109); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 132, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 136, _ctx)) { case 1: { - setState(1077); + setState(1106); iC_IfNotExists(); - setState(1078); + setState(1107); match(CypherParser::SP); break; } @@ -5560,21 +5748,21 @@ CypherParser::IC_CreateSequenceContext* CypherParser::iC_CreateSequence() { default: break; } - setState(1082); + setState(1111); oC_SchemaName(); - setState(1087); + setState(1116); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 133, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 137, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1083); + setState(1112); match(CypherParser::SP); - setState(1084); + setState(1113); iC_SequenceOptions(); } - setState(1089); + setState(1118); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 133, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 137, _ctx); } } @@ -5629,7 +5817,7 @@ size_t CypherParser::IC_CreateTypeContext::getRuleIndex() const { CypherParser::IC_CreateTypeContext* CypherParser::iC_CreateType() { IC_CreateTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, CypherParser::RuleIC_CreateType); + enterRule(_localctx, 72, CypherParser::RuleIC_CreateType); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5640,30 +5828,30 @@ CypherParser::IC_CreateTypeContext* CypherParser::iC_CreateType() { }); try { enterOuterAlt(_localctx, 1); - setState(1090); + setState(1119); match(CypherParser::CREATE); - setState(1091); + setState(1120); match(CypherParser::SP); - setState(1092); + setState(1121); match(CypherParser::TYPE); - setState(1093); + setState(1122); match(CypherParser::SP); - setState(1094); + setState(1123); oC_SchemaName(); - setState(1095); + setState(1124); match(CypherParser::SP); - setState(1096); + setState(1125); match(CypherParser::AS); - setState(1097); + setState(1126); match(CypherParser::SP); - setState(1098); + setState(1127); iC_DataType(0); - setState(1100); + setState(1129); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 134, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 138, _ctx)) { case 1: { - setState(1099); + setState(1128); match(CypherParser::SP); break; } @@ -5716,7 +5904,7 @@ size_t CypherParser::IC_SequenceOptionsContext::getRuleIndex() const { CypherParser::IC_SequenceOptionsContext* CypherParser::iC_SequenceOptions() { IC_SequenceOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, CypherParser::RuleIC_SequenceOptions); + enterRule(_localctx, 74, CypherParser::RuleIC_SequenceOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5726,40 +5914,40 @@ CypherParser::IC_SequenceOptionsContext* CypherParser::iC_SequenceOptions() { exitRule(); }); try { - setState(1107); + setState(1136); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 135, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 139, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1102); + setState(1131); iC_IncrementBy(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1103); + setState(1132); iC_MinValue(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1104); + setState(1133); iC_MaxValue(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1105); + setState(1134); iC_StartWith(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1106); + setState(1135); iC_Cycle(); break; } @@ -5812,7 +6000,7 @@ size_t CypherParser::IC_WithPasswdContext::getRuleIndex() const { CypherParser::IC_WithPasswdContext* CypherParser::iC_WithPasswd() { IC_WithPasswdContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 72, CypherParser::RuleIC_WithPasswd); + enterRule(_localctx, 76, CypherParser::RuleIC_WithPasswd); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5823,17 +6011,17 @@ CypherParser::IC_WithPasswdContext* CypherParser::iC_WithPasswd() { }); try { enterOuterAlt(_localctx, 1); - setState(1109); + setState(1138); match(CypherParser::SP); - setState(1110); + setState(1139); match(CypherParser::WITH); - setState(1111); + setState(1140); match(CypherParser::SP); - setState(1112); + setState(1141); match(CypherParser::PASSWORD); - setState(1113); + setState(1142); match(CypherParser::SP); - setState(1114); + setState(1143); match(CypherParser::StringLiteral); } @@ -5888,7 +6076,7 @@ size_t CypherParser::IC_CreateUserContext::getRuleIndex() const { CypherParser::IC_CreateUserContext* CypherParser::iC_CreateUser() { IC_CreateUserContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, CypherParser::RuleIC_CreateUser); + enterRule(_localctx, 78, CypherParser::RuleIC_CreateUser); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5899,22 +6087,22 @@ CypherParser::IC_CreateUserContext* CypherParser::iC_CreateUser() { }); try { enterOuterAlt(_localctx, 1); - setState(1116); + setState(1145); match(CypherParser::CREATE); - setState(1117); + setState(1146); match(CypherParser::SP); - setState(1118); + setState(1147); match(CypherParser::USER); - setState(1119); + setState(1148); match(CypherParser::SP); - setState(1123); + setState(1152); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 136, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 140, _ctx)) { case 1: { - setState(1120); + setState(1149); iC_IfNotExists(); - setState(1121); + setState(1150); match(CypherParser::SP); break; } @@ -5922,14 +6110,14 @@ CypherParser::IC_CreateUserContext* CypherParser::iC_CreateUser() { default: break; } - setState(1125); + setState(1154); oC_Variable(); - setState(1127); + setState(1156); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 137, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 141, _ctx)) { case 1: { - setState(1126); + setState(1155); iC_WithPasswd(); break; } @@ -5986,7 +6174,7 @@ size_t CypherParser::IC_CreateRoleContext::getRuleIndex() const { CypherParser::IC_CreateRoleContext* CypherParser::iC_CreateRole() { IC_CreateRoleContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, CypherParser::RuleIC_CreateRole); + enterRule(_localctx, 80, CypherParser::RuleIC_CreateRole); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5997,22 +6185,22 @@ CypherParser::IC_CreateRoleContext* CypherParser::iC_CreateRole() { }); try { enterOuterAlt(_localctx, 1); - setState(1129); + setState(1158); match(CypherParser::CREATE); - setState(1130); + setState(1159); match(CypherParser::SP); - setState(1131); + setState(1160); match(CypherParser::ROLE); - setState(1132); + setState(1161); match(CypherParser::SP); - setState(1136); + setState(1165); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 138, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 142, _ctx)) { case 1: { - setState(1133); + setState(1162); iC_IfNotExists(); - setState(1134); + setState(1163); match(CypherParser::SP); break; } @@ -6020,7 +6208,7 @@ CypherParser::IC_CreateRoleContext* CypherParser::iC_CreateRole() { default: break; } - setState(1138); + setState(1167); oC_Variable(); } @@ -6071,7 +6259,7 @@ size_t CypherParser::IC_IncrementByContext::getRuleIndex() const { CypherParser::IC_IncrementByContext* CypherParser::iC_IncrementBy() { IC_IncrementByContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, CypherParser::RuleIC_IncrementBy); + enterRule(_localctx, 82, CypherParser::RuleIC_IncrementBy); size_t _la = 0; #if __cplusplus > 201703L @@ -6083,29 +6271,29 @@ CypherParser::IC_IncrementByContext* CypherParser::iC_IncrementBy() { }); try { enterOuterAlt(_localctx, 1); - setState(1140); + setState(1169); match(CypherParser::INCREMENT); - setState(1141); + setState(1170); match(CypherParser::SP); - setState(1144); + setState(1173); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::BY) { - setState(1142); + setState(1171); match(CypherParser::BY); - setState(1143); + setState(1172); match(CypherParser::SP); } - setState(1147); + setState(1176); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1146); + setState(1175); match(CypherParser::MINUS); } - setState(1149); + setState(1178); oC_IntegerLiteral(); } @@ -6152,7 +6340,7 @@ size_t CypherParser::IC_MinValueContext::getRuleIndex() const { CypherParser::IC_MinValueContext* CypherParser::iC_MinValue() { IC_MinValueContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, CypherParser::RuleIC_MinValue); + enterRule(_localctx, 84, CypherParser::RuleIC_MinValue); size_t _la = 0; #if __cplusplus > 201703L @@ -6163,35 +6351,35 @@ CypherParser::IC_MinValueContext* CypherParser::iC_MinValue() { exitRule(); }); try { - setState(1160); + setState(1189); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::NO: { enterOuterAlt(_localctx, 1); - setState(1151); + setState(1180); match(CypherParser::NO); - setState(1152); + setState(1181); match(CypherParser::SP); - setState(1153); + setState(1182); match(CypherParser::MINVALUE); break; } case CypherParser::MINVALUE: { enterOuterAlt(_localctx, 2); - setState(1154); + setState(1183); match(CypherParser::MINVALUE); - setState(1155); + setState(1184); match(CypherParser::SP); - setState(1157); + setState(1186); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1156); + setState(1185); match(CypherParser::MINUS); } - setState(1159); + setState(1188); oC_IntegerLiteral(); break; } @@ -6244,7 +6432,7 @@ size_t CypherParser::IC_MaxValueContext::getRuleIndex() const { CypherParser::IC_MaxValueContext* CypherParser::iC_MaxValue() { IC_MaxValueContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, CypherParser::RuleIC_MaxValue); + enterRule(_localctx, 86, CypherParser::RuleIC_MaxValue); size_t _la = 0; #if __cplusplus > 201703L @@ -6255,35 +6443,35 @@ CypherParser::IC_MaxValueContext* CypherParser::iC_MaxValue() { exitRule(); }); try { - setState(1171); + setState(1200); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::NO: { enterOuterAlt(_localctx, 1); - setState(1162); + setState(1191); match(CypherParser::NO); - setState(1163); + setState(1192); match(CypherParser::SP); - setState(1164); + setState(1193); match(CypherParser::MAXVALUE); break; } case CypherParser::MAXVALUE: { enterOuterAlt(_localctx, 2); - setState(1165); + setState(1194); match(CypherParser::MAXVALUE); - setState(1166); + setState(1195); match(CypherParser::SP); - setState(1168); + setState(1197); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1167); + setState(1196); match(CypherParser::MINUS); } - setState(1170); + setState(1199); oC_IntegerLiteral(); break; } @@ -6340,7 +6528,7 @@ size_t CypherParser::IC_StartWithContext::getRuleIndex() const { CypherParser::IC_StartWithContext* CypherParser::iC_StartWith() { IC_StartWithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, CypherParser::RuleIC_StartWith); + enterRule(_localctx, 88, CypherParser::RuleIC_StartWith); size_t _la = 0; #if __cplusplus > 201703L @@ -6352,29 +6540,29 @@ CypherParser::IC_StartWithContext* CypherParser::iC_StartWith() { }); try { enterOuterAlt(_localctx, 1); - setState(1173); + setState(1202); match(CypherParser::START); - setState(1174); + setState(1203); match(CypherParser::SP); - setState(1177); + setState(1206); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::WITH) { - setState(1175); + setState(1204); match(CypherParser::WITH); - setState(1176); + setState(1205); match(CypherParser::SP); } - setState(1180); + setState(1209); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1179); + setState(1208); match(CypherParser::MINUS); } - setState(1182); + setState(1211); oC_IntegerLiteral(); } @@ -6413,7 +6601,7 @@ size_t CypherParser::IC_CycleContext::getRuleIndex() const { CypherParser::IC_CycleContext* CypherParser::iC_Cycle() { IC_CycleContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, CypherParser::RuleIC_Cycle); + enterRule(_localctx, 90, CypherParser::RuleIC_Cycle); size_t _la = 0; #if __cplusplus > 201703L @@ -6425,17 +6613,17 @@ CypherParser::IC_CycleContext* CypherParser::iC_Cycle() { }); try { enterOuterAlt(_localctx, 1); - setState(1186); + setState(1215); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::NO) { - setState(1184); + setState(1213); match(CypherParser::NO); - setState(1185); + setState(1214); match(CypherParser::SP); } - setState(1188); + setState(1217); match(CypherParser::CYCLE); } @@ -6474,7 +6662,7 @@ size_t CypherParser::IC_IfExistsContext::getRuleIndex() const { CypherParser::IC_IfExistsContext* CypherParser::iC_IfExists() { IC_IfExistsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, CypherParser::RuleIC_IfExists); + enterRule(_localctx, 92, CypherParser::RuleIC_IfExists); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6485,11 +6673,11 @@ CypherParser::IC_IfExistsContext* CypherParser::iC_IfExists() { }); try { enterOuterAlt(_localctx, 1); - setState(1190); + setState(1219); match(CypherParser::IF); - setState(1191); + setState(1220); match(CypherParser::SP); - setState(1192); + setState(1221); match(CypherParser::EXISTS); } @@ -6552,7 +6740,7 @@ size_t CypherParser::IC_DropContext::getRuleIndex() const { CypherParser::IC_DropContext* CypherParser::iC_Drop() { IC_DropContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, CypherParser::RuleIC_Drop); + enterRule(_localctx, 94, CypherParser::RuleIC_Drop); size_t _la = 0; #if __cplusplus > 201703L @@ -6564,11 +6752,11 @@ CypherParser::IC_DropContext* CypherParser::iC_Drop() { }); try { enterOuterAlt(_localctx, 1); - setState(1194); + setState(1223); match(CypherParser::DROP); - setState(1195); + setState(1224); match(CypherParser::SP); - setState(1196); + setState(1225); _la = _input->LA(1); if (!(((((_la - 91) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 91)) & 285873023287297) != 0))) { @@ -6578,16 +6766,16 @@ CypherParser::IC_DropContext* CypherParser::iC_Drop() { _errHandler->reportMatch(this); consume(); } - setState(1197); + setState(1226); match(CypherParser::SP); - setState(1201); + setState(1230); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 148, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 152, _ctx)) { case 1: { - setState(1198); + setState(1227); iC_IfExists(); - setState(1199); + setState(1228); match(CypherParser::SP); break; } @@ -6595,7 +6783,7 @@ CypherParser::IC_DropContext* CypherParser::iC_Drop() { default: break; } - setState(1203); + setState(1232); oC_SchemaName(); } @@ -6646,7 +6834,7 @@ size_t CypherParser::IC_AlterTableContext::getRuleIndex() const { CypherParser::IC_AlterTableContext* CypherParser::iC_AlterTable() { IC_AlterTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, CypherParser::RuleIC_AlterTable); + enterRule(_localctx, 96, CypherParser::RuleIC_AlterTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6657,19 +6845,19 @@ CypherParser::IC_AlterTableContext* CypherParser::iC_AlterTable() { }); try { enterOuterAlt(_localctx, 1); - setState(1205); + setState(1234); match(CypherParser::ALTER); - setState(1206); + setState(1235); match(CypherParser::SP); - setState(1207); + setState(1236); match(CypherParser::TABLE); - setState(1208); + setState(1237); match(CypherParser::SP); - setState(1209); + setState(1238); oC_SchemaName(); - setState(1210); + setState(1239); match(CypherParser::SP); - setState(1211); + setState(1240); iC_AlterOptions(); } @@ -6720,7 +6908,7 @@ size_t CypherParser::IC_AlterOptionsContext::getRuleIndex() const { CypherParser::IC_AlterOptionsContext* CypherParser::iC_AlterOptions() { IC_AlterOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, CypherParser::RuleIC_AlterOptions); + enterRule(_localctx, 98, CypherParser::RuleIC_AlterOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6730,47 +6918,47 @@ CypherParser::IC_AlterOptionsContext* CypherParser::iC_AlterOptions() { exitRule(); }); try { - setState(1219); + setState(1248); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 149, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 153, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1213); + setState(1242); iC_AddProperty(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1214); + setState(1243); iC_DropProperty(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1215); + setState(1244); iC_RenameTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1216); + setState(1245); iC_RenameProperty(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1217); + setState(1246); iC_AddFromToConnection(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(1218); + setState(1247); iC_DropFromToConnection(); break; } @@ -6831,7 +7019,7 @@ size_t CypherParser::IC_AddPropertyContext::getRuleIndex() const { CypherParser::IC_AddPropertyContext* CypherParser::iC_AddProperty() { IC_AddPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, CypherParser::RuleIC_AddProperty); + enterRule(_localctx, 100, CypherParser::RuleIC_AddProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6842,18 +7030,18 @@ CypherParser::IC_AddPropertyContext* CypherParser::iC_AddProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1221); + setState(1250); match(CypherParser::ADD); - setState(1222); + setState(1251); match(CypherParser::SP); - setState(1226); + setState(1255); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 150, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 154, _ctx)) { case 1: { - setState(1223); + setState(1252); iC_IfNotExists(); - setState(1224); + setState(1253); match(CypherParser::SP); break; } @@ -6861,20 +7049,20 @@ CypherParser::IC_AddPropertyContext* CypherParser::iC_AddProperty() { default: break; } - setState(1228); + setState(1257); oC_PropertyKeyName(); - setState(1229); + setState(1258); match(CypherParser::SP); - setState(1230); + setState(1259); iC_DataType(0); - setState(1233); + setState(1262); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 151, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 155, _ctx)) { case 1: { - setState(1231); + setState(1260); match(CypherParser::SP); - setState(1232); + setState(1261); iC_Default(); break; } @@ -6919,7 +7107,7 @@ size_t CypherParser::IC_DefaultContext::getRuleIndex() const { CypherParser::IC_DefaultContext* CypherParser::iC_Default() { IC_DefaultContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, CypherParser::RuleIC_Default); + enterRule(_localctx, 102, CypherParser::RuleIC_Default); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6930,11 +7118,11 @@ CypherParser::IC_DefaultContext* CypherParser::iC_Default() { }); try { enterOuterAlt(_localctx, 1); - setState(1235); + setState(1264); match(CypherParser::DEFAULT); - setState(1236); + setState(1265); match(CypherParser::SP); - setState(1237); + setState(1266); oC_Expression(); } @@ -6981,7 +7169,7 @@ size_t CypherParser::IC_DropPropertyContext::getRuleIndex() const { CypherParser::IC_DropPropertyContext* CypherParser::iC_DropProperty() { IC_DropPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, CypherParser::RuleIC_DropProperty); + enterRule(_localctx, 104, CypherParser::RuleIC_DropProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6992,18 +7180,18 @@ CypherParser::IC_DropPropertyContext* CypherParser::iC_DropProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1239); + setState(1268); match(CypherParser::DROP); - setState(1240); + setState(1269); match(CypherParser::SP); - setState(1244); + setState(1273); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 152, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 156, _ctx)) { case 1: { - setState(1241); + setState(1270); iC_IfExists(); - setState(1242); + setState(1271); match(CypherParser::SP); break; } @@ -7011,7 +7199,7 @@ CypherParser::IC_DropPropertyContext* CypherParser::iC_DropProperty() { default: break; } - setState(1246); + setState(1275); oC_PropertyKeyName(); } @@ -7058,7 +7246,7 @@ size_t CypherParser::IC_RenameTableContext::getRuleIndex() const { CypherParser::IC_RenameTableContext* CypherParser::iC_RenameTable() { IC_RenameTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, CypherParser::RuleIC_RenameTable); + enterRule(_localctx, 106, CypherParser::RuleIC_RenameTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7069,15 +7257,15 @@ CypherParser::IC_RenameTableContext* CypherParser::iC_RenameTable() { }); try { enterOuterAlt(_localctx, 1); - setState(1248); + setState(1277); match(CypherParser::RENAME); - setState(1249); + setState(1278); match(CypherParser::SP); - setState(1250); + setState(1279); match(CypherParser::TO); - setState(1251); + setState(1280); match(CypherParser::SP); - setState(1252); + setState(1281); oC_SchemaName(); } @@ -7128,7 +7316,7 @@ size_t CypherParser::IC_RenamePropertyContext::getRuleIndex() const { CypherParser::IC_RenamePropertyContext* CypherParser::iC_RenameProperty() { IC_RenamePropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, CypherParser::RuleIC_RenameProperty); + enterRule(_localctx, 108, CypherParser::RuleIC_RenameProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7139,19 +7327,19 @@ CypherParser::IC_RenamePropertyContext* CypherParser::iC_RenameProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1254); + setState(1283); match(CypherParser::RENAME); - setState(1255); + setState(1284); match(CypherParser::SP); - setState(1256); + setState(1285); oC_PropertyKeyName(); - setState(1257); + setState(1286); match(CypherParser::SP); - setState(1258); + setState(1287); match(CypherParser::TO); - setState(1259); + setState(1288); match(CypherParser::SP); - setState(1260); + setState(1289); oC_PropertyKeyName(); } @@ -7198,7 +7386,7 @@ size_t CypherParser::IC_AddFromToConnectionContext::getRuleIndex() const { CypherParser::IC_AddFromToConnectionContext* CypherParser::iC_AddFromToConnection() { IC_AddFromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, CypherParser::RuleIC_AddFromToConnection); + enterRule(_localctx, 110, CypherParser::RuleIC_AddFromToConnection); size_t _la = 0; #if __cplusplus > 201703L @@ -7210,21 +7398,21 @@ CypherParser::IC_AddFromToConnectionContext* CypherParser::iC_AddFromToConnectio }); try { enterOuterAlt(_localctx, 1); - setState(1262); + setState(1291); match(CypherParser::ADD); - setState(1263); + setState(1292); match(CypherParser::SP); - setState(1267); + setState(1296); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::IF) { - setState(1264); + setState(1293); iC_IfNotExists(); - setState(1265); + setState(1294); match(CypherParser::SP); } - setState(1269); + setState(1298); iC_FromToConnection(); } @@ -7271,7 +7459,7 @@ size_t CypherParser::IC_DropFromToConnectionContext::getRuleIndex() const { CypherParser::IC_DropFromToConnectionContext* CypherParser::iC_DropFromToConnection() { IC_DropFromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, CypherParser::RuleIC_DropFromToConnection); + enterRule(_localctx, 112, CypherParser::RuleIC_DropFromToConnection); size_t _la = 0; #if __cplusplus > 201703L @@ -7283,21 +7471,21 @@ CypherParser::IC_DropFromToConnectionContext* CypherParser::iC_DropFromToConnect }); try { enterOuterAlt(_localctx, 1); - setState(1271); + setState(1300); match(CypherParser::DROP); - setState(1272); + setState(1301); match(CypherParser::SP); - setState(1276); + setState(1305); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::IF) { - setState(1273); + setState(1302); iC_IfExists(); - setState(1274); + setState(1303); match(CypherParser::SP); } - setState(1278); + setState(1307); iC_FromToConnection(); } @@ -7340,7 +7528,7 @@ size_t CypherParser::IC_ColumnDefinitionsContext::getRuleIndex() const { CypherParser::IC_ColumnDefinitionsContext* CypherParser::iC_ColumnDefinitions() { IC_ColumnDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, CypherParser::RuleIC_ColumnDefinitions); + enterRule(_localctx, 114, CypherParser::RuleIC_ColumnDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -7353,37 +7541,37 @@ CypherParser::IC_ColumnDefinitionsContext* CypherParser::iC_ColumnDefinitions() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1280); + setState(1309); iC_ColumnDefinition(); - setState(1291); + setState(1320); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 157, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 161, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1282); + setState(1311); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1281); + setState(1310); match(CypherParser::SP); } - setState(1284); + setState(1313); match(CypherParser::T__3); - setState(1286); + setState(1315); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1285); + setState(1314); match(CypherParser::SP); } - setState(1288); + setState(1317); iC_ColumnDefinition(); } - setState(1293); + setState(1322); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 157, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 161, _ctx); } } @@ -7422,7 +7610,7 @@ size_t CypherParser::IC_ColumnDefinitionContext::getRuleIndex() const { CypherParser::IC_ColumnDefinitionContext* CypherParser::iC_ColumnDefinition() { IC_ColumnDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, CypherParser::RuleIC_ColumnDefinition); + enterRule(_localctx, 116, CypherParser::RuleIC_ColumnDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7433,11 +7621,11 @@ CypherParser::IC_ColumnDefinitionContext* CypherParser::iC_ColumnDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(1294); + setState(1323); oC_PropertyKeyName(); - setState(1295); + setState(1324); match(CypherParser::SP); - setState(1296); + setState(1325); iC_DataType(0); } @@ -7480,7 +7668,7 @@ size_t CypherParser::IC_PropertyDefinitionsContext::getRuleIndex() const { CypherParser::IC_PropertyDefinitionsContext* CypherParser::iC_PropertyDefinitions() { IC_PropertyDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, CypherParser::RuleIC_PropertyDefinitions); + enterRule(_localctx, 118, CypherParser::RuleIC_PropertyDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -7493,37 +7681,37 @@ CypherParser::IC_PropertyDefinitionsContext* CypherParser::iC_PropertyDefinition try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1298); + setState(1327); iC_PropertyDefinition(); - setState(1309); + setState(1338); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 160, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 164, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1300); + setState(1329); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1299); + setState(1328); match(CypherParser::SP); } - setState(1302); + setState(1331); match(CypherParser::T__3); - setState(1304); + setState(1333); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1303); + setState(1332); match(CypherParser::SP); } - setState(1306); + setState(1335); iC_PropertyDefinition(); } - setState(1311); + setState(1340); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 160, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 164, _ctx); } } @@ -7574,7 +7762,7 @@ size_t CypherParser::IC_PropertyDefinitionContext::getRuleIndex() const { CypherParser::IC_PropertyDefinitionContext* CypherParser::iC_PropertyDefinition() { IC_PropertyDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, CypherParser::RuleIC_PropertyDefinition); + enterRule(_localctx, 120, CypherParser::RuleIC_PropertyDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7585,16 +7773,16 @@ CypherParser::IC_PropertyDefinitionContext* CypherParser::iC_PropertyDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(1312); + setState(1341); iC_ColumnDefinition(); - setState(1315); + setState(1344); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 161, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 165, _ctx)) { case 1: { - setState(1313); + setState(1342); match(CypherParser::SP); - setState(1314); + setState(1343); iC_Default(); break; } @@ -7602,18 +7790,18 @@ CypherParser::IC_PropertyDefinitionContext* CypherParser::iC_PropertyDefinition( default: break; } - setState(1321); + setState(1350); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 162, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 166, _ctx)) { case 1: { - setState(1317); + setState(1346); match(CypherParser::SP); - setState(1318); + setState(1347); match(CypherParser::PRIMARY); - setState(1319); + setState(1348); match(CypherParser::SP); - setState(1320); + setState(1349); match(CypherParser::KEY); break; } @@ -7666,7 +7854,7 @@ size_t CypherParser::IC_CreateNodeConstraintContext::getRuleIndex() const { CypherParser::IC_CreateNodeConstraintContext* CypherParser::iC_CreateNodeConstraint() { IC_CreateNodeConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, CypherParser::RuleIC_CreateNodeConstraint); + enterRule(_localctx, 122, CypherParser::RuleIC_CreateNodeConstraint); size_t _la = 0; #if __cplusplus > 201703L @@ -7678,41 +7866,41 @@ CypherParser::IC_CreateNodeConstraintContext* CypherParser::iC_CreateNodeConstra }); try { enterOuterAlt(_localctx, 1); - setState(1323); + setState(1352); match(CypherParser::PRIMARY); - setState(1324); + setState(1353); match(CypherParser::SP); - setState(1325); + setState(1354); match(CypherParser::KEY); - setState(1327); + setState(1356); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1326); + setState(1355); match(CypherParser::SP); } - setState(1329); + setState(1358); match(CypherParser::T__1); - setState(1331); + setState(1360); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1330); + setState(1359); match(CypherParser::SP); } - setState(1333); + setState(1362); oC_PropertyKeyName(); - setState(1335); + setState(1364); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1334); + setState(1363); match(CypherParser::SP); } - setState(1337); + setState(1366); match(CypherParser::T__2); } @@ -7755,7 +7943,7 @@ size_t CypherParser::IC_UnionTypeContext::getRuleIndex() const { CypherParser::IC_UnionTypeContext* CypherParser::iC_UnionType() { IC_UnionTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, CypherParser::RuleIC_UnionType); + enterRule(_localctx, 124, CypherParser::RuleIC_UnionType); size_t _la = 0; #if __cplusplus > 201703L @@ -7767,37 +7955,37 @@ CypherParser::IC_UnionTypeContext* CypherParser::iC_UnionType() { }); try { enterOuterAlt(_localctx, 1); - setState(1339); + setState(1368); match(CypherParser::UNION); - setState(1341); + setState(1370); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1340); + setState(1369); match(CypherParser::SP); } - setState(1343); + setState(1372); match(CypherParser::T__1); - setState(1345); + setState(1374); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1344); + setState(1373); match(CypherParser::SP); } - setState(1347); + setState(1376); iC_ColumnDefinitions(); - setState(1349); + setState(1378); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1348); + setState(1377); match(CypherParser::SP); } - setState(1351); + setState(1380); match(CypherParser::T__2); } @@ -7840,7 +8028,7 @@ size_t CypherParser::IC_StructTypeContext::getRuleIndex() const { CypherParser::IC_StructTypeContext* CypherParser::iC_StructType() { IC_StructTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, CypherParser::RuleIC_StructType); + enterRule(_localctx, 126, CypherParser::RuleIC_StructType); size_t _la = 0; #if __cplusplus > 201703L @@ -7852,37 +8040,37 @@ CypherParser::IC_StructTypeContext* CypherParser::iC_StructType() { }); try { enterOuterAlt(_localctx, 1); - setState(1353); + setState(1382); match(CypherParser::STRUCT); - setState(1355); + setState(1384); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1354); + setState(1383); match(CypherParser::SP); } - setState(1357); + setState(1386); match(CypherParser::T__1); - setState(1359); + setState(1388); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1358); + setState(1387); match(CypherParser::SP); } - setState(1361); + setState(1390); iC_ColumnDefinitions(); - setState(1363); + setState(1392); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1362); + setState(1391); match(CypherParser::SP); } - setState(1365); + setState(1394); match(CypherParser::T__2); } @@ -7929,7 +8117,7 @@ size_t CypherParser::IC_MapTypeContext::getRuleIndex() const { CypherParser::IC_MapTypeContext* CypherParser::iC_MapType() { IC_MapTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, CypherParser::RuleIC_MapType); + enterRule(_localctx, 128, CypherParser::RuleIC_MapType); size_t _la = 0; #if __cplusplus > 201703L @@ -7941,57 +8129,57 @@ CypherParser::IC_MapTypeContext* CypherParser::iC_MapType() { }); try { enterOuterAlt(_localctx, 1); - setState(1367); + setState(1396); match(CypherParser::MAP); - setState(1369); + setState(1398); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1368); + setState(1397); match(CypherParser::SP); } - setState(1371); + setState(1400); match(CypherParser::T__1); - setState(1373); + setState(1402); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1372); + setState(1401); match(CypherParser::SP); } - setState(1375); + setState(1404); iC_DataType(0); - setState(1377); + setState(1406); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1376); + setState(1405); match(CypherParser::SP); } - setState(1379); + setState(1408); match(CypherParser::T__3); - setState(1381); + setState(1410); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1380); + setState(1409); match(CypherParser::SP); } - setState(1383); + setState(1412); iC_DataType(0); - setState(1385); + setState(1414); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1384); + setState(1413); match(CypherParser::SP); } - setState(1387); + setState(1416); match(CypherParser::T__2); } @@ -8038,7 +8226,7 @@ size_t CypherParser::IC_DecimalTypeContext::getRuleIndex() const { CypherParser::IC_DecimalTypeContext* CypherParser::iC_DecimalType() { IC_DecimalTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, CypherParser::RuleIC_DecimalType); + enterRule(_localctx, 130, CypherParser::RuleIC_DecimalType); size_t _la = 0; #if __cplusplus > 201703L @@ -8050,57 +8238,57 @@ CypherParser::IC_DecimalTypeContext* CypherParser::iC_DecimalType() { }); try { enterOuterAlt(_localctx, 1); - setState(1389); + setState(1418); match(CypherParser::DECIMAL); - setState(1391); + setState(1420); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1390); + setState(1419); match(CypherParser::SP); } - setState(1393); + setState(1422); match(CypherParser::T__1); - setState(1395); + setState(1424); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1394); + setState(1423); match(CypherParser::SP); } - setState(1397); + setState(1426); oC_IntegerLiteral(); - setState(1399); + setState(1428); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1398); + setState(1427); match(CypherParser::SP); } - setState(1401); + setState(1430); match(CypherParser::T__3); - setState(1403); + setState(1432); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1402); + setState(1431); match(CypherParser::SP); } - setState(1405); + setState(1434); oC_IntegerLiteral(); - setState(1407); + setState(1436); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1406); + setState(1435); match(CypherParser::SP); } - setState(1409); + setState(1438); match(CypherParser::T__2); } @@ -8164,8 +8352,8 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { CypherParser::IC_DataTypeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::IC_DataTypeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 128; - enterRecursionRule(_localctx, 128, CypherParser::RuleIC_DataType, precedence); + size_t startState = 132; + enterRecursionRule(_localctx, 132, CypherParser::RuleIC_DataType, precedence); @@ -8179,35 +8367,35 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1417); + setState(1446); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 182, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 186, _ctx)) { case 1: { - setState(1412); + setState(1441); oC_SymbolicName(); break; } case 2: { - setState(1413); + setState(1442); iC_UnionType(); break; } case 3: { - setState(1414); + setState(1443); iC_StructType(); break; } case 4: { - setState(1415); + setState(1444); iC_MapType(); break; } case 5: { - setState(1416); + setState(1445); iC_DecimalType(); break; } @@ -8216,9 +8404,9 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(1423); + setState(1452); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 183, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 187, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) @@ -8226,15 +8414,15 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleIC_DataType); - setState(1419); + setState(1448); if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(1420); + setState(1449); iC_ListIdentifiers(); } - setState(1425); + setState(1454); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 183, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 187, _ctx); } } catch (RecognitionException &e) { @@ -8267,7 +8455,7 @@ size_t CypherParser::IC_ListIdentifiersContext::getRuleIndex() const { CypherParser::IC_ListIdentifiersContext* CypherParser::iC_ListIdentifiers() { IC_ListIdentifiersContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, CypherParser::RuleIC_ListIdentifiers); + enterRule(_localctx, 134, CypherParser::RuleIC_ListIdentifiers); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8279,19 +8467,19 @@ CypherParser::IC_ListIdentifiersContext* CypherParser::iC_ListIdentifiers() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1426); + setState(1455); iC_ListIdentifier(); - setState(1430); + setState(1459); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 184, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 188, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1427); + setState(1456); iC_ListIdentifier(); } - setState(1432); + setState(1461); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 184, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 188, _ctx); } } @@ -8322,7 +8510,7 @@ size_t CypherParser::IC_ListIdentifierContext::getRuleIndex() const { CypherParser::IC_ListIdentifierContext* CypherParser::iC_ListIdentifier() { IC_ListIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, CypherParser::RuleIC_ListIdentifier); + enterRule(_localctx, 136, CypherParser::RuleIC_ListIdentifier); size_t _la = 0; #if __cplusplus > 201703L @@ -8334,17 +8522,17 @@ CypherParser::IC_ListIdentifierContext* CypherParser::iC_ListIdentifier() { }); try { enterOuterAlt(_localctx, 1); - setState(1433); + setState(1462); match(CypherParser::T__6); - setState(1435); + setState(1464); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1434); + setState(1463); oC_IntegerLiteral(); } - setState(1437); + setState(1466); match(CypherParser::T__7); } @@ -8379,7 +8567,7 @@ size_t CypherParser::OC_AnyCypherOptionContext::getRuleIndex() const { CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { OC_AnyCypherOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, CypherParser::RuleOC_AnyCypherOption); + enterRule(_localctx, 138, CypherParser::RuleOC_AnyCypherOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8389,19 +8577,19 @@ CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { exitRule(); }); try { - setState(1441); + setState(1470); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::EXPLAIN: { enterOuterAlt(_localctx, 1); - setState(1439); + setState(1468); oC_Explain(); break; } case CypherParser::PROFILE: { enterOuterAlt(_localctx, 2); - setState(1440); + setState(1469); oC_Profile(); break; } @@ -8446,7 +8634,7 @@ size_t CypherParser::OC_ExplainContext::getRuleIndex() const { CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { OC_ExplainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, CypherParser::RuleOC_Explain); + enterRule(_localctx, 140, CypherParser::RuleOC_Explain); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8457,16 +8645,16 @@ CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { }); try { enterOuterAlt(_localctx, 1); - setState(1443); + setState(1472); match(CypherParser::EXPLAIN); - setState(1446); + setState(1475); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 187, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 191, _ctx)) { case 1: { - setState(1444); + setState(1473); match(CypherParser::SP); - setState(1445); + setState(1474); match(CypherParser::LOGICAL); break; } @@ -8503,7 +8691,7 @@ size_t CypherParser::OC_ProfileContext::getRuleIndex() const { CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { OC_ProfileContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, CypherParser::RuleOC_Profile); + enterRule(_localctx, 142, CypherParser::RuleOC_Profile); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8514,7 +8702,7 @@ CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { }); try { enterOuterAlt(_localctx, 1); - setState(1448); + setState(1477); match(CypherParser::PROFILE); } @@ -8577,7 +8765,7 @@ size_t CypherParser::IC_TransactionContext::getRuleIndex() const { CypherParser::IC_TransactionContext* CypherParser::iC_Transaction() { IC_TransactionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, CypherParser::RuleIC_Transaction); + enterRule(_localctx, 144, CypherParser::RuleIC_Transaction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8587,56 +8775,56 @@ CypherParser::IC_TransactionContext* CypherParser::iC_Transaction() { exitRule(); }); try { - setState(1463); + setState(1492); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 188, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 192, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1450); + setState(1479); match(CypherParser::BEGIN); - setState(1451); + setState(1480); match(CypherParser::SP); - setState(1452); + setState(1481); match(CypherParser::TRANSACTION); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1453); + setState(1482); match(CypherParser::BEGIN); - setState(1454); + setState(1483); match(CypherParser::SP); - setState(1455); + setState(1484); match(CypherParser::TRANSACTION); - setState(1456); + setState(1485); match(CypherParser::SP); - setState(1457); + setState(1486); match(CypherParser::READ); - setState(1458); + setState(1487); match(CypherParser::SP); - setState(1459); + setState(1488); match(CypherParser::ONLY); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1460); + setState(1489); match(CypherParser::COMMIT); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1461); + setState(1490); match(CypherParser::ROLLBACK); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1462); + setState(1491); match(CypherParser::CHECKPOINT); break; } @@ -8685,7 +8873,7 @@ size_t CypherParser::IC_ExtensionContext::getRuleIndex() const { CypherParser::IC_ExtensionContext* CypherParser::iC_Extension() { IC_ExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, CypherParser::RuleIC_Extension); + enterRule(_localctx, 146, CypherParser::RuleIC_Extension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8695,12 +8883,12 @@ CypherParser::IC_ExtensionContext* CypherParser::iC_Extension() { exitRule(); }); try { - setState(1469); + setState(1498); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::LOAD: { enterOuterAlt(_localctx, 1); - setState(1465); + setState(1494); iC_LoadExtension(); break; } @@ -8708,21 +8896,21 @@ CypherParser::IC_ExtensionContext* CypherParser::iC_Extension() { case CypherParser::FORCE: case CypherParser::INSTALL: { enterOuterAlt(_localctx, 2); - setState(1466); + setState(1495); iC_InstallExtension(); break; } case CypherParser::UNINSTALL: { enterOuterAlt(_localctx, 3); - setState(1467); + setState(1496); iC_UninstallExtension(); break; } case CypherParser::UPDATE: { enterOuterAlt(_localctx, 4); - setState(1468); + setState(1497); iC_UpdateExtension(); break; } @@ -8779,7 +8967,7 @@ size_t CypherParser::IC_LoadExtensionContext::getRuleIndex() const { CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { IC_LoadExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, CypherParser::RuleIC_LoadExtension); + enterRule(_localctx, 148, CypherParser::RuleIC_LoadExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8790,18 +8978,18 @@ CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1471); + setState(1500); match(CypherParser::LOAD); - setState(1472); + setState(1501); match(CypherParser::SP); - setState(1475); + setState(1504); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 190, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 194, _ctx)) { case 1: { - setState(1473); + setState(1502); match(CypherParser::EXTENSION); - setState(1474); + setState(1503); match(CypherParser::SP); break; } @@ -8809,11 +8997,11 @@ CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { default: break; } - setState(1479); + setState(1508); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::StringLiteral: { - setState(1477); + setState(1506); match(CypherParser::StringLiteral); break; } @@ -8883,7 +9071,7 @@ CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1478); + setState(1507); oC_Variable(); break; } @@ -8944,7 +9132,7 @@ size_t CypherParser::IC_InstallExtensionContext::getRuleIndex() const { CypherParser::IC_InstallExtensionContext* CypherParser::iC_InstallExtension() { IC_InstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, CypherParser::RuleIC_InstallExtension); + enterRule(_localctx, 150, CypherParser::RuleIC_InstallExtension); size_t _la = 0; #if __cplusplus > 201703L @@ -8956,34 +9144,34 @@ CypherParser::IC_InstallExtensionContext* CypherParser::iC_InstallExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1483); + setState(1512); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::FORCE) { - setState(1481); + setState(1510); match(CypherParser::FORCE); - setState(1482); + setState(1511); match(CypherParser::SP); } - setState(1485); + setState(1514); match(CypherParser::INSTALL); - setState(1486); + setState(1515); match(CypherParser::SP); - setState(1487); + setState(1516); oC_Variable(); - setState(1492); + setState(1521); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 193, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 197, _ctx)) { case 1: { - setState(1488); + setState(1517); match(CypherParser::SP); - setState(1489); + setState(1518); match(CypherParser::FROM); - setState(1490); + setState(1519); match(CypherParser::SP); - setState(1491); + setState(1520); match(CypherParser::StringLiteral); break; } @@ -9028,7 +9216,7 @@ size_t CypherParser::IC_UninstallExtensionContext::getRuleIndex() const { CypherParser::IC_UninstallExtensionContext* CypherParser::iC_UninstallExtension() { IC_UninstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, CypherParser::RuleIC_UninstallExtension); + enterRule(_localctx, 152, CypherParser::RuleIC_UninstallExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9039,11 +9227,11 @@ CypherParser::IC_UninstallExtensionContext* CypherParser::iC_UninstallExtension( }); try { enterOuterAlt(_localctx, 1); - setState(1494); + setState(1523); match(CypherParser::UNINSTALL); - setState(1495); + setState(1524); match(CypherParser::SP); - setState(1496); + setState(1525); oC_Variable(); } @@ -9082,7 +9270,7 @@ size_t CypherParser::IC_UpdateExtensionContext::getRuleIndex() const { CypherParser::IC_UpdateExtensionContext* CypherParser::iC_UpdateExtension() { IC_UpdateExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, CypherParser::RuleIC_UpdateExtension); + enterRule(_localctx, 154, CypherParser::RuleIC_UpdateExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9093,11 +9281,11 @@ CypherParser::IC_UpdateExtensionContext* CypherParser::iC_UpdateExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1498); + setState(1527); match(CypherParser::UPDATE); - setState(1499); + setState(1528); match(CypherParser::SP); - setState(1500); + setState(1529); oC_Variable(); } @@ -9128,7 +9316,7 @@ size_t CypherParser::OC_QueryContext::getRuleIndex() const { CypherParser::OC_QueryContext* CypherParser::oC_Query() { OC_QueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, CypherParser::RuleOC_Query); + enterRule(_localctx, 156, CypherParser::RuleOC_Query); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9139,7 +9327,7 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { }); try { enterOuterAlt(_localctx, 1); - setState(1502); + setState(1531); oC_RegularQuery(); } @@ -9194,7 +9382,7 @@ size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, CypherParser::RuleOC_RegularQuery); + enterRule(_localctx, 158, CypherParser::RuleOC_RegularQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -9206,52 +9394,52 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { }); try { size_t alt; - setState(1525); + setState(1554); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 198, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 202, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1504); + setState(1533); oC_SingleQuery(); - setState(1511); + setState(1540); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 195, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 199, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1506); + setState(1535); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1505); + setState(1534); match(CypherParser::SP); } - setState(1508); + setState(1537); oC_Union(); } - setState(1513); + setState(1542); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 195, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 199, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1518); + setState(1547); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1514); + setState(1543); oC_Return(); - setState(1516); + setState(1545); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1515); + setState(1544); match(CypherParser::SP); } break; @@ -9260,11 +9448,11 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { default: throw NoViableAltException(this); } - setState(1520); + setState(1549); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 197, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1522); + setState(1551); oC_SingleQuery(); notifyReturnNotAtEnd(_localctx->start); break; @@ -9318,7 +9506,7 @@ size_t CypherParser::OC_UnionContext::getRuleIndex() const { CypherParser::OC_UnionContext* CypherParser::oC_Union() { OC_UnionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, CypherParser::RuleOC_Union); + enterRule(_localctx, 160, CypherParser::RuleOC_Union); size_t _la = 0; #if __cplusplus > 201703L @@ -9329,43 +9517,43 @@ CypherParser::OC_UnionContext* CypherParser::oC_Union() { exitRule(); }); try { - setState(1539); + setState(1568); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 201, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 205, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1527); + setState(1556); match(CypherParser::UNION); - setState(1528); + setState(1557); match(CypherParser::SP); - setState(1529); + setState(1558); match(CypherParser::ALL); - setState(1531); + setState(1560); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1530); + setState(1559); match(CypherParser::SP); } - setState(1533); + setState(1562); oC_SingleQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1534); + setState(1563); match(CypherParser::UNION); - setState(1536); + setState(1565); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1535); + setState(1564); match(CypherParser::SP); } - setState(1538); + setState(1567); oC_SingleQuery(); break; } @@ -9406,7 +9594,7 @@ size_t CypherParser::OC_SingleQueryContext::getRuleIndex() const { CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { OC_SingleQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, CypherParser::RuleOC_SingleQuery); + enterRule(_localctx, 162, CypherParser::RuleOC_SingleQuery); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9416,19 +9604,19 @@ CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { exitRule(); }); try { - setState(1543); + setState(1572); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 202, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 206, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1541); + setState(1570); oC_SinglePartQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1542); + setState(1571); oC_MultiPartQuery(); break; } @@ -9489,7 +9677,7 @@ size_t CypherParser::OC_SinglePartQueryContext::getRuleIndex() const { CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { OC_SinglePartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, CypherParser::RuleOC_SinglePartQuery); + enterRule(_localctx, 164, CypherParser::RuleOC_SinglePartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -9501,92 +9689,92 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { }); try { size_t alt; - setState(1580); + setState(1609); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 211, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 215, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1551); + setState(1580); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::CALL || ((((_la - 105) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 105)) & 4398046576649) != 0)) { - setState(1545); + setState(1574); oC_ReadingClause(); - setState(1547); + setState(1576); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1546); + setState(1575); match(CypherParser::SP); } - setState(1553); + setState(1582); _errHandler->sync(this); _la = _input->LA(1); } - setState(1554); + setState(1583); oC_Return(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1561); + setState(1590); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::CALL || ((((_la - 105) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 105)) & 4398046576649) != 0)) { - setState(1555); + setState(1584); oC_ReadingClause(); - setState(1557); + setState(1586); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1556); + setState(1585); match(CypherParser::SP); } - setState(1563); + setState(1592); _errHandler->sync(this); _la = _input->LA(1); } - setState(1564); + setState(1593); oC_UpdatingClause(); - setState(1571); + setState(1600); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 208, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 212, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1566); + setState(1595); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1565); + setState(1594); match(CypherParser::SP); } - setState(1568); + setState(1597); oC_UpdatingClause(); } - setState(1573); + setState(1602); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 208, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 212, _ctx); } - setState(1578); + setState(1607); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 210, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 214, _ctx)) { case 1: { - setState(1575); + setState(1604); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1574); + setState(1603); match(CypherParser::SP); } - setState(1577); + setState(1606); oC_Return(); break; } @@ -9645,7 +9833,7 @@ size_t CypherParser::OC_MultiPartQueryContext::getRuleIndex() const { CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { OC_MultiPartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, CypherParser::RuleOC_MultiPartQuery); + enterRule(_localctx, 166, CypherParser::RuleOC_MultiPartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -9658,20 +9846,20 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1586); + setState(1615); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1582); + setState(1611); iC_QueryPart(); - setState(1584); + setState(1613); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1583); + setState(1612); match(CypherParser::SP); } break; @@ -9680,11 +9868,11 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { default: throw NoViableAltException(this); } - setState(1588); + setState(1617); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 213, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 217, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1590); + setState(1619); oC_SinglePartQuery(); } @@ -9739,7 +9927,7 @@ size_t CypherParser::IC_QueryPartContext::getRuleIndex() const { CypherParser::IC_QueryPartContext* CypherParser::iC_QueryPart() { IC_QueryPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, CypherParser::RuleIC_QueryPart); + enterRule(_localctx, 168, CypherParser::RuleIC_QueryPart); size_t _la = 0; #if __cplusplus > 201703L @@ -9751,45 +9939,45 @@ CypherParser::IC_QueryPartContext* CypherParser::iC_QueryPart() { }); try { enterOuterAlt(_localctx, 1); - setState(1598); + setState(1627); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::CALL || ((((_la - 105) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 105)) & 4398046576649) != 0)) { - setState(1592); + setState(1621); oC_ReadingClause(); - setState(1594); + setState(1623); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1593); + setState(1622); match(CypherParser::SP); } - setState(1600); + setState(1629); _errHandler->sync(this); _la = _input->LA(1); } - setState(1607); + setState(1636); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 4398046511393) != 0) || _la == CypherParser::SET) { - setState(1601); + setState(1630); oC_UpdatingClause(); - setState(1603); + setState(1632); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1602); + setState(1631); match(CypherParser::SP); } - setState(1609); + setState(1638); _errHandler->sync(this); _la = _input->LA(1); } - setState(1610); + setState(1639); oC_With(); } @@ -9832,7 +10020,7 @@ size_t CypherParser::OC_UpdatingClauseContext::getRuleIndex() const { CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { OC_UpdatingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, CypherParser::RuleOC_UpdatingClause); + enterRule(_localctx, 170, CypherParser::RuleOC_UpdatingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9842,26 +10030,26 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { exitRule(); }); try { - setState(1616); + setState(1645); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::CREATE: { enterOuterAlt(_localctx, 1); - setState(1612); + setState(1641); oC_Create(); break; } case CypherParser::MERGE: { enterOuterAlt(_localctx, 2); - setState(1613); + setState(1642); oC_Merge(); break; } case CypherParser::SET: { enterOuterAlt(_localctx, 3); - setState(1614); + setState(1643); oC_Set(); break; } @@ -9869,7 +10057,7 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { case CypherParser::DELETE: case CypherParser::DETACH: { enterOuterAlt(_localctx, 4); - setState(1615); + setState(1644); oC_Delete(); break; } @@ -9918,7 +10106,7 @@ size_t CypherParser::OC_ReadingClauseContext::getRuleIndex() const { CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { OC_ReadingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, CypherParser::RuleOC_ReadingClause); + enterRule(_localctx, 172, CypherParser::RuleOC_ReadingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9928,34 +10116,34 @@ CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { exitRule(); }); try { - setState(1622); + setState(1651); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::MATCH: case CypherParser::OPTIONAL: { enterOuterAlt(_localctx, 1); - setState(1618); + setState(1647); oC_Match(); break; } case CypherParser::UNWIND: { enterOuterAlt(_localctx, 2); - setState(1619); + setState(1648); oC_Unwind(); break; } case CypherParser::CALL: { enterOuterAlt(_localctx, 3); - setState(1620); + setState(1649); iC_InQueryCall(); break; } case CypherParser::LOAD: { enterOuterAlt(_localctx, 4); - setState(1621); + setState(1650); iC_LoadFrom(); break; } @@ -10028,7 +10216,7 @@ size_t CypherParser::IC_LoadFromContext::getRuleIndex() const { CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { IC_LoadFromContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, CypherParser::RuleIC_LoadFrom); + enterRule(_localctx, 174, CypherParser::RuleIC_LoadFrom); size_t _la = 0; #if __cplusplus > 201703L @@ -10040,50 +10228,50 @@ CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(1624); + setState(1653); match(CypherParser::LOAD); - setState(1642); + setState(1671); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 223, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { case 1: { - setState(1625); + setState(1654); match(CypherParser::SP); - setState(1626); + setState(1655); match(CypherParser::WITH); - setState(1627); + setState(1656); match(CypherParser::SP); - setState(1628); + setState(1657); match(CypherParser::HEADERS); - setState(1630); + setState(1659); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1629); + setState(1658); match(CypherParser::SP); } - setState(1632); + setState(1661); match(CypherParser::T__1); - setState(1634); + setState(1663); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1633); + setState(1662); match(CypherParser::SP); } - setState(1636); + setState(1665); iC_ColumnDefinitions(); - setState(1638); + setState(1667); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1637); + setState(1666); match(CypherParser::SP); } - setState(1640); + setState(1669); match(CypherParser::T__2); break; } @@ -10091,48 +10279,48 @@ CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { default: break; } - setState(1644); + setState(1673); match(CypherParser::SP); - setState(1645); + setState(1674); match(CypherParser::FROM); - setState(1646); + setState(1675); match(CypherParser::SP); - setState(1647); + setState(1676); iC_ScanSource(); - setState(1661); + setState(1690); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 231, _ctx)) { case 1: { - setState(1649); + setState(1678); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1648); + setState(1677); match(CypherParser::SP); } - setState(1651); + setState(1680); match(CypherParser::T__1); - setState(1653); + setState(1682); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1652); + setState(1681); match(CypherParser::SP); } - setState(1655); + setState(1684); iC_Options(); - setState(1657); + setState(1686); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1656); + setState(1685); match(CypherParser::SP); } - setState(1659); + setState(1688); match(CypherParser::T__2); break; } @@ -10140,20 +10328,20 @@ CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { default: break; } - setState(1667); + setState(1696); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 229, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 233, _ctx)) { case 1: { - setState(1664); + setState(1693); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1663); + setState(1692); match(CypherParser::SP); } - setState(1666); + setState(1695); oC_Where(); break; } @@ -10206,7 +10394,7 @@ size_t CypherParser::OC_YieldItemContext::getRuleIndex() const { CypherParser::OC_YieldItemContext* CypherParser::oC_YieldItem() { OC_YieldItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, CypherParser::RuleOC_YieldItem); + enterRule(_localctx, 176, CypherParser::RuleOC_YieldItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10217,18 +10405,18 @@ CypherParser::OC_YieldItemContext* CypherParser::oC_YieldItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1674); + setState(1703); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 230, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 234, _ctx)) { case 1: { - setState(1669); + setState(1698); oC_Variable(); - setState(1670); + setState(1699); match(CypherParser::SP); - setState(1671); + setState(1700); match(CypherParser::AS); - setState(1672); + setState(1701); match(CypherParser::SP); break; } @@ -10236,7 +10424,7 @@ CypherParser::OC_YieldItemContext* CypherParser::oC_YieldItem() { default: break; } - setState(1676); + setState(1705); oC_Variable(); } @@ -10279,7 +10467,7 @@ size_t CypherParser::OC_YieldItemsContext::getRuleIndex() const { CypherParser::OC_YieldItemsContext* CypherParser::oC_YieldItems() { OC_YieldItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, CypherParser::RuleOC_YieldItems); + enterRule(_localctx, 178, CypherParser::RuleOC_YieldItems); size_t _la = 0; #if __cplusplus > 201703L @@ -10292,37 +10480,37 @@ CypherParser::OC_YieldItemsContext* CypherParser::oC_YieldItems() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1678); + setState(1707); oC_YieldItem(); - setState(1689); + setState(1718); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 233, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 237, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1680); + setState(1709); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1679); + setState(1708); match(CypherParser::SP); } - setState(1682); + setState(1711); match(CypherParser::T__3); - setState(1684); + setState(1713); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1683); + setState(1712); match(CypherParser::SP); } - setState(1686); + setState(1715); oC_YieldItem(); } - setState(1691); + setState(1720); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 233, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 237, _ctx); } } @@ -10377,7 +10565,7 @@ size_t CypherParser::IC_InQueryCallContext::getRuleIndex() const { CypherParser::IC_InQueryCallContext* CypherParser::iC_InQueryCall() { IC_InQueryCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, CypherParser::RuleIC_InQueryCall); + enterRule(_localctx, 180, CypherParser::RuleIC_InQueryCall); size_t _la = 0; #if __cplusplus > 201703L @@ -10389,26 +10577,26 @@ CypherParser::IC_InQueryCallContext* CypherParser::iC_InQueryCall() { }); try { enterOuterAlt(_localctx, 1); - setState(1692); + setState(1721); match(CypherParser::CALL); - setState(1693); + setState(1722); match(CypherParser::SP); - setState(1694); + setState(1723); oC_FunctionInvocation(); - setState(1699); + setState(1728); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 235, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 239, _ctx)) { case 1: { - setState(1696); + setState(1725); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1695); + setState(1724); match(CypherParser::SP); } - setState(1698); + setState(1727); oC_Where(); break; } @@ -10416,24 +10604,24 @@ CypherParser::IC_InQueryCallContext* CypherParser::iC_InQueryCall() { default: break; } - setState(1707); + setState(1736); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 237, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 241, _ctx)) { case 1: { - setState(1702); + setState(1731); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1701); + setState(1730); match(CypherParser::SP); } - setState(1704); + setState(1733); match(CypherParser::YIELD); - setState(1705); + setState(1734); match(CypherParser::SP); - setState(1706); + setState(1735); oC_YieldItems(); break; } @@ -10494,7 +10682,7 @@ size_t CypherParser::OC_MatchContext::getRuleIndex() const { CypherParser::OC_MatchContext* CypherParser::oC_Match() { OC_MatchContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, CypherParser::RuleOC_Match); + enterRule(_localctx, 182, CypherParser::RuleOC_Match); size_t _la = 0; #if __cplusplus > 201703L @@ -10506,36 +10694,36 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { }); try { enterOuterAlt(_localctx, 1); - setState(1711); + setState(1740); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::OPTIONAL) { - setState(1709); + setState(1738); match(CypherParser::OPTIONAL); - setState(1710); + setState(1739); match(CypherParser::SP); } - setState(1713); + setState(1742); match(CypherParser::MATCH); - setState(1715); + setState(1744); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1714); + setState(1743); match(CypherParser::SP); } - setState(1717); + setState(1746); oC_Pattern(); - setState(1720); + setState(1749); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 240, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 244, _ctx)) { case 1: { - setState(1718); + setState(1747); match(CypherParser::SP); - setState(1719); + setState(1748); oC_Where(); break; } @@ -10543,14 +10731,14 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { default: break; } - setState(1724); + setState(1753); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 241, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 245, _ctx)) { case 1: { - setState(1722); + setState(1751); match(CypherParser::SP); - setState(1723); + setState(1752); iC_Hint(); break; } @@ -10595,7 +10783,7 @@ size_t CypherParser::IC_HintContext::getRuleIndex() const { CypherParser::IC_HintContext* CypherParser::iC_Hint() { IC_HintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, CypherParser::RuleIC_Hint); + enterRule(_localctx, 184, CypherParser::RuleIC_Hint); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10606,11 +10794,11 @@ CypherParser::IC_HintContext* CypherParser::iC_Hint() { }); try { enterOuterAlt(_localctx, 1); - setState(1726); + setState(1755); match(CypherParser::HINT); - setState(1727); + setState(1756); match(CypherParser::SP); - setState(1728); + setState(1757); iC_JoinNode(0); } @@ -10682,8 +10870,8 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { CypherParser::IC_JoinNodeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::IC_JoinNodeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 182; - enterRecursionRule(_localctx, 182, CypherParser::RuleIC_JoinNode, precedence); + size_t startState = 186; + enterRecursionRule(_localctx, 186, CypherParser::RuleIC_JoinNode, precedence); size_t _la = 0; @@ -10697,31 +10885,31 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1742); + setState(1771); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__1: { - setState(1731); + setState(1760); match(CypherParser::T__1); - setState(1733); + setState(1762); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1732); + setState(1761); match(CypherParser::SP); } - setState(1735); + setState(1764); iC_JoinNode(0); - setState(1737); + setState(1766); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1736); + setState(1765); match(CypherParser::SP); } - setState(1739); + setState(1768); match(CypherParser::T__2); break; } @@ -10791,7 +10979,7 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1741); + setState(1770); oC_SchemaName(); break; } @@ -10800,30 +10988,30 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { throw NoViableAltException(this); } _ctx->stop = _input->LT(-1); - setState(1760); + setState(1789); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 247, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) triggerExitRuleEvent(); previousContext = _localctx; - setState(1758); + setState(1787); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 246, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 250, _ctx)) { case 1: { _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleIC_JoinNode); - setState(1744); + setState(1773); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(1745); + setState(1774); match(CypherParser::SP); - setState(1746); + setState(1775); match(CypherParser::JOIN); - setState(1747); + setState(1776); match(CypherParser::SP); - setState(1748); + setState(1777); iC_JoinNode(5); break; } @@ -10831,22 +11019,22 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { case 2: { _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleIC_JoinNode); - setState(1749); + setState(1778); if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(1754); + setState(1783); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1750); + setState(1779); match(CypherParser::SP); - setState(1751); + setState(1780); match(CypherParser::MULTI_JOIN); - setState(1752); + setState(1781); match(CypherParser::SP); - setState(1753); + setState(1782); oC_SchemaName(); break; } @@ -10854,9 +11042,9 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { default: throw NoViableAltException(this); } - setState(1756); + setState(1785); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 245, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 249, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } @@ -10865,9 +11053,9 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { break; } } - setState(1762); + setState(1791); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 247, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); } } catch (RecognitionException &e) { @@ -10916,7 +11104,7 @@ size_t CypherParser::OC_UnwindContext::getRuleIndex() const { CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { OC_UnwindContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, CypherParser::RuleOC_Unwind); + enterRule(_localctx, 188, CypherParser::RuleOC_Unwind); size_t _la = 0; #if __cplusplus > 201703L @@ -10928,25 +11116,25 @@ CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { }); try { enterOuterAlt(_localctx, 1); - setState(1763); + setState(1792); match(CypherParser::UNWIND); - setState(1765); + setState(1794); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1764); + setState(1793); match(CypherParser::SP); } - setState(1767); + setState(1796); oC_Expression(); - setState(1768); + setState(1797); match(CypherParser::SP); - setState(1769); + setState(1798); match(CypherParser::AS); - setState(1770); + setState(1799); match(CypherParser::SP); - setState(1771); + setState(1800); oC_Variable(); } @@ -10985,7 +11173,7 @@ size_t CypherParser::OC_CreateContext::getRuleIndex() const { CypherParser::OC_CreateContext* CypherParser::oC_Create() { OC_CreateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, CypherParser::RuleOC_Create); + enterRule(_localctx, 190, CypherParser::RuleOC_Create); size_t _la = 0; #if __cplusplus > 201703L @@ -10997,17 +11185,17 @@ CypherParser::OC_CreateContext* CypherParser::oC_Create() { }); try { enterOuterAlt(_localctx, 1); - setState(1773); + setState(1802); match(CypherParser::CREATE); - setState(1775); + setState(1804); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1774); + setState(1803); match(CypherParser::SP); } - setState(1777); + setState(1806); oC_Pattern(); } @@ -11058,7 +11246,7 @@ size_t CypherParser::OC_MergeContext::getRuleIndex() const { CypherParser::OC_MergeContext* CypherParser::oC_Merge() { OC_MergeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, CypherParser::RuleOC_Merge); + enterRule(_localctx, 192, CypherParser::RuleOC_Merge); size_t _la = 0; #if __cplusplus > 201703L @@ -11071,31 +11259,31 @@ CypherParser::OC_MergeContext* CypherParser::oC_Merge() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1779); + setState(1808); match(CypherParser::MERGE); - setState(1781); + setState(1810); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1780); + setState(1809); match(CypherParser::SP); } - setState(1783); + setState(1812); oC_Pattern(); - setState(1788); + setState(1817); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 255, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1784); + setState(1813); match(CypherParser::SP); - setState(1785); + setState(1814); oC_MergeAction(); } - setState(1790); + setState(1819); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 255, _ctx); } } @@ -11146,7 +11334,7 @@ size_t CypherParser::OC_MergeActionContext::getRuleIndex() const { CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { OC_MergeActionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, CypherParser::RuleOC_MergeAction); + enterRule(_localctx, 194, CypherParser::RuleOC_MergeAction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11156,35 +11344,35 @@ CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { exitRule(); }); try { - setState(1801); + setState(1830); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 252, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 256, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1791); + setState(1820); match(CypherParser::ON); - setState(1792); + setState(1821); match(CypherParser::SP); - setState(1793); + setState(1822); match(CypherParser::MATCH); - setState(1794); + setState(1823); match(CypherParser::SP); - setState(1795); + setState(1824); oC_Set(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1796); + setState(1825); match(CypherParser::ON); - setState(1797); + setState(1826); match(CypherParser::SP); - setState(1798); + setState(1827); match(CypherParser::CREATE); - setState(1799); + setState(1828); match(CypherParser::SP); - setState(1800); + setState(1829); oC_Set(); break; } @@ -11245,7 +11433,7 @@ size_t CypherParser::OC_SetContext::getRuleIndex() const { CypherParser::OC_SetContext* CypherParser::oC_Set() { OC_SetContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, CypherParser::RuleOC_Set); + enterRule(_localctx, 196, CypherParser::RuleOC_Set); size_t _la = 0; #if __cplusplus > 201703L @@ -11257,89 +11445,89 @@ CypherParser::OC_SetContext* CypherParser::oC_Set() { }); try { size_t alt; - setState(1835); + setState(1864); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 264, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1803); + setState(1832); match(CypherParser::SET); - setState(1805); + setState(1834); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1804); + setState(1833); match(CypherParser::SP); } - setState(1807); + setState(1836); oC_SetItem(); - setState(1818); + setState(1847); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 256, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 260, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1809); + setState(1838); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1808); + setState(1837); match(CypherParser::SP); } - setState(1811); + setState(1840); match(CypherParser::T__3); - setState(1813); + setState(1842); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1812); + setState(1841); match(CypherParser::SP); } - setState(1815); + setState(1844); oC_SetItem(); } - setState(1820); + setState(1849); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 256, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 260, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1821); + setState(1850); match(CypherParser::SET); - setState(1823); + setState(1852); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1822); + setState(1851); match(CypherParser::SP); } - setState(1825); + setState(1854); oC_Atom(); - setState(1827); + setState(1856); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1826); + setState(1855); match(CypherParser::SP); } - setState(1829); + setState(1858); match(CypherParser::T__5); - setState(1831); + setState(1860); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1830); + setState(1859); match(CypherParser::SP); } - setState(1833); + setState(1862); iC_Properties(); break; } @@ -11388,7 +11576,7 @@ size_t CypherParser::OC_SetItemContext::getRuleIndex() const { CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { OC_SetItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, CypherParser::RuleOC_SetItem); + enterRule(_localctx, 198, CypherParser::RuleOC_SetItem); size_t _la = 0; #if __cplusplus > 201703L @@ -11400,27 +11588,27 @@ CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1837); + setState(1866); oC_PropertyExpression(); - setState(1839); + setState(1868); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1838); + setState(1867); match(CypherParser::SP); } - setState(1841); + setState(1870); match(CypherParser::T__5); - setState(1843); + setState(1872); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1842); + setState(1871); match(CypherParser::SP); } - setState(1845); + setState(1874); oC_Expression(); } @@ -11471,7 +11659,7 @@ size_t CypherParser::OC_DeleteContext::getRuleIndex() const { CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { OC_DeleteContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, CypherParser::RuleOC_Delete); + enterRule(_localctx, 200, CypherParser::RuleOC_Delete); size_t _la = 0; #if __cplusplus > 201703L @@ -11484,57 +11672,57 @@ CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1849); + setState(1878); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DETACH) { - setState(1847); + setState(1876); match(CypherParser::DETACH); - setState(1848); + setState(1877); match(CypherParser::SP); } - setState(1851); + setState(1880); match(CypherParser::DELETE); - setState(1853); + setState(1882); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1852); + setState(1881); match(CypherParser::SP); } - setState(1855); + setState(1884); oC_Expression(); - setState(1866); + setState(1895); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 267, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 271, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1857); + setState(1886); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1856); + setState(1885); match(CypherParser::SP); } - setState(1859); + setState(1888); match(CypherParser::T__3); - setState(1861); + setState(1890); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1860); + setState(1889); match(CypherParser::SP); } - setState(1863); + setState(1892); oC_Expression(); } - setState(1868); + setState(1897); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 267, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 271, _ctx); } } @@ -11577,7 +11765,7 @@ size_t CypherParser::OC_WithContext::getRuleIndex() const { CypherParser::OC_WithContext* CypherParser::oC_With() { OC_WithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, CypherParser::RuleOC_With); + enterRule(_localctx, 202, CypherParser::RuleOC_With); size_t _la = 0; #if __cplusplus > 201703L @@ -11589,24 +11777,24 @@ CypherParser::OC_WithContext* CypherParser::oC_With() { }); try { enterOuterAlt(_localctx, 1); - setState(1869); + setState(1898); match(CypherParser::WITH); - setState(1870); + setState(1899); oC_ProjectionBody(); - setState(1875); + setState(1904); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 269, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 273, _ctx)) { case 1: { - setState(1872); + setState(1901); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1871); + setState(1900); match(CypherParser::SP); } - setState(1874); + setState(1903); oC_Where(); break; } @@ -11647,7 +11835,7 @@ size_t CypherParser::OC_ReturnContext::getRuleIndex() const { CypherParser::OC_ReturnContext* CypherParser::oC_Return() { OC_ReturnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, CypherParser::RuleOC_Return); + enterRule(_localctx, 204, CypherParser::RuleOC_Return); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11658,9 +11846,9 @@ CypherParser::OC_ReturnContext* CypherParser::oC_Return() { }); try { enterOuterAlt(_localctx, 1); - setState(1877); + setState(1906); match(CypherParser::RETURN); - setState(1878); + setState(1907); oC_ProjectionBody(); } @@ -11715,7 +11903,7 @@ size_t CypherParser::OC_ProjectionBodyContext::getRuleIndex() const { CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { OC_ProjectionBodyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, CypherParser::RuleOC_ProjectionBody); + enterRule(_localctx, 206, CypherParser::RuleOC_ProjectionBody); size_t _la = 0; #if __cplusplus > 201703L @@ -11727,20 +11915,20 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { }); try { enterOuterAlt(_localctx, 1); - setState(1884); + setState(1913); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 271, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 275, _ctx)) { case 1: { - setState(1881); + setState(1910); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1880); + setState(1909); match(CypherParser::SP); } - setState(1883); + setState(1912); match(CypherParser::DISTINCT); break; } @@ -11748,18 +11936,18 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1886); + setState(1915); match(CypherParser::SP); - setState(1887); + setState(1916); oC_ProjectionItems(); - setState(1890); + setState(1919); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 272, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 276, _ctx)) { case 1: { - setState(1888); + setState(1917); match(CypherParser::SP); - setState(1889); + setState(1918); oC_Order(); break; } @@ -11767,14 +11955,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1894); + setState(1923); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 273, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 277, _ctx)) { case 1: { - setState(1892); + setState(1921); match(CypherParser::SP); - setState(1893); + setState(1922); oC_Skip(); break; } @@ -11782,14 +11970,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1898); + setState(1927); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 274, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 278, _ctx)) { case 1: { - setState(1896); + setState(1925); match(CypherParser::SP); - setState(1897); + setState(1926); oC_Limit(); break; } @@ -11842,7 +12030,7 @@ size_t CypherParser::OC_ProjectionItemsContext::getRuleIndex() const { CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { OC_ProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, CypherParser::RuleOC_ProjectionItems); + enterRule(_localctx, 208, CypherParser::RuleOC_ProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -11854,42 +12042,42 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { }); try { size_t alt; - setState(1928); + setState(1957); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::STAR: { enterOuterAlt(_localctx, 1); - setState(1900); + setState(1929); match(CypherParser::STAR); - setState(1911); + setState(1940); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 277, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 281, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1902); + setState(1931); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1901); + setState(1930); match(CypherParser::SP); } - setState(1904); + setState(1933); match(CypherParser::T__3); - setState(1906); + setState(1935); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1905); + setState(1934); match(CypherParser::SP); } - setState(1908); + setState(1937); oC_ProjectionItem(); } - setState(1913); + setState(1942); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 277, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 281, _ctx); } break; } @@ -11980,37 +12168,37 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(1914); + setState(1943); oC_ProjectionItem(); - setState(1925); + setState(1954); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 280, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1916); + setState(1945); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1915); + setState(1944); match(CypherParser::SP); } - setState(1918); + setState(1947); match(CypherParser::T__3); - setState(1920); + setState(1949); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1919); + setState(1948); match(CypherParser::SP); } - setState(1922); + setState(1951); oC_ProjectionItem(); } - setState(1927); + setState(1956); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 280, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); } break; } @@ -12063,7 +12251,7 @@ size_t CypherParser::OC_ProjectionItemContext::getRuleIndex() const { CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { OC_ProjectionItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, CypherParser::RuleOC_ProjectionItem); + enterRule(_localctx, 210, CypherParser::RuleOC_ProjectionItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12073,27 +12261,27 @@ CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { exitRule(); }); try { - setState(1937); + setState(1966); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 282, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 286, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1930); + setState(1959); oC_Expression(); - setState(1931); + setState(1960); match(CypherParser::SP); - setState(1932); + setState(1961); match(CypherParser::AS); - setState(1933); + setState(1962); match(CypherParser::SP); - setState(1934); + setState(1963); oC_Variable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1936); + setState(1965); oC_Expression(); break; } @@ -12150,7 +12338,7 @@ size_t CypherParser::OC_OrderContext::getRuleIndex() const { CypherParser::OC_OrderContext* CypherParser::oC_Order() { OC_OrderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, CypherParser::RuleOC_Order); + enterRule(_localctx, 212, CypherParser::RuleOC_Order); size_t _la = 0; #if __cplusplus > 201703L @@ -12162,33 +12350,33 @@ CypherParser::OC_OrderContext* CypherParser::oC_Order() { }); try { enterOuterAlt(_localctx, 1); - setState(1939); + setState(1968); match(CypherParser::ORDER); - setState(1940); + setState(1969); match(CypherParser::SP); - setState(1941); + setState(1970); match(CypherParser::BY); - setState(1942); + setState(1971); match(CypherParser::SP); - setState(1943); + setState(1972); oC_SortItem(); - setState(1951); + setState(1980); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(1944); + setState(1973); match(CypherParser::T__3); - setState(1946); + setState(1975); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1945); + setState(1974); match(CypherParser::SP); } - setState(1948); + setState(1977); oC_SortItem(); - setState(1953); + setState(1982); _errHandler->sync(this); _la = _input->LA(1); } @@ -12229,7 +12417,7 @@ size_t CypherParser::OC_SkipContext::getRuleIndex() const { CypherParser::OC_SkipContext* CypherParser::oC_Skip() { OC_SkipContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, CypherParser::RuleOC_Skip); + enterRule(_localctx, 214, CypherParser::RuleOC_Skip); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12240,11 +12428,11 @@ CypherParser::OC_SkipContext* CypherParser::oC_Skip() { }); try { enterOuterAlt(_localctx, 1); - setState(1954); + setState(1983); match(CypherParser::L_SKIP); - setState(1955); + setState(1984); match(CypherParser::SP); - setState(1956); + setState(1985); oC_Expression(); } @@ -12283,7 +12471,7 @@ size_t CypherParser::OC_LimitContext::getRuleIndex() const { CypherParser::OC_LimitContext* CypherParser::oC_Limit() { OC_LimitContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, CypherParser::RuleOC_Limit); + enterRule(_localctx, 216, CypherParser::RuleOC_Limit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12294,11 +12482,11 @@ CypherParser::OC_LimitContext* CypherParser::oC_Limit() { }); try { enterOuterAlt(_localctx, 1); - setState(1958); + setState(1987); match(CypherParser::LIMIT); - setState(1959); + setState(1988); match(CypherParser::SP); - setState(1960); + setState(1989); oC_Expression(); } @@ -12349,7 +12537,7 @@ size_t CypherParser::OC_SortItemContext::getRuleIndex() const { CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { OC_SortItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, CypherParser::RuleOC_SortItem); + enterRule(_localctx, 218, CypherParser::RuleOC_SortItem); size_t _la = 0; #if __cplusplus > 201703L @@ -12361,22 +12549,22 @@ CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1962); + setState(1991); oC_Expression(); - setState(1967); + setState(1996); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 286, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 290, _ctx)) { case 1: { - setState(1964); + setState(1993); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1963); + setState(1992); match(CypherParser::SP); } - setState(1966); + setState(1995); _la = _input->LA(1); if (!(((((_la - 52) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 52)) & 12582915) != 0))) { @@ -12429,7 +12617,7 @@ size_t CypherParser::OC_WhereContext::getRuleIndex() const { CypherParser::OC_WhereContext* CypherParser::oC_Where() { OC_WhereContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, CypherParser::RuleOC_Where); + enterRule(_localctx, 220, CypherParser::RuleOC_Where); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12440,11 +12628,11 @@ CypherParser::OC_WhereContext* CypherParser::oC_Where() { }); try { enterOuterAlt(_localctx, 1); - setState(1969); + setState(1998); match(CypherParser::WHERE); - setState(1970); + setState(1999); match(CypherParser::SP); - setState(1971); + setState(2000); oC_Expression(); } @@ -12487,7 +12675,7 @@ size_t CypherParser::OC_PatternContext::getRuleIndex() const { CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { OC_PatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, CypherParser::RuleOC_Pattern); + enterRule(_localctx, 222, CypherParser::RuleOC_Pattern); size_t _la = 0; #if __cplusplus > 201703L @@ -12500,37 +12688,37 @@ CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1973); + setState(2002); oC_PatternPart(); - setState(1984); + setState(2013); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 289, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 293, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1975); + setState(2004); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1974); + setState(2003); match(CypherParser::SP); } - setState(1977); + setState(2006); match(CypherParser::T__3); - setState(1979); + setState(2008); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1978); + setState(2007); match(CypherParser::SP); } - setState(1981); + setState(2010); oC_PatternPart(); } - setState(1986); + setState(2015); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 289, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 293, _ctx); } } @@ -12573,7 +12761,7 @@ size_t CypherParser::OC_PatternPartContext::getRuleIndex() const { CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { OC_PatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, CypherParser::RuleOC_PatternPart); + enterRule(_localctx, 224, CypherParser::RuleOC_PatternPart); size_t _la = 0; #if __cplusplus > 201703L @@ -12584,7 +12772,7 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { exitRule(); }); try { - setState(1998); + setState(2027); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -12653,34 +12841,34 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(1987); + setState(2016); oC_Variable(); - setState(1989); + setState(2018); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1988); + setState(2017); match(CypherParser::SP); } - setState(1991); + setState(2020); match(CypherParser::T__5); - setState(1993); + setState(2022); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1992); + setState(2021); match(CypherParser::SP); } - setState(1995); + setState(2024); oC_AnonymousPatternPart(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(1997); + setState(2026); oC_AnonymousPatternPart(); break; } @@ -12717,7 +12905,7 @@ size_t CypherParser::OC_AnonymousPatternPartContext::getRuleIndex() const { CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternPart() { OC_AnonymousPatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, CypherParser::RuleOC_AnonymousPatternPart); + enterRule(_localctx, 226, CypherParser::RuleOC_AnonymousPatternPart); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12728,7 +12916,7 @@ CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternP }); try { enterOuterAlt(_localctx, 1); - setState(2000); + setState(2029); oC_PatternElement(); } @@ -12779,7 +12967,7 @@ size_t CypherParser::OC_PatternElementContext::getRuleIndex() const { CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { OC_PatternElementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, CypherParser::RuleOC_PatternElement); + enterRule(_localctx, 228, CypherParser::RuleOC_PatternElement); size_t _la = 0; #if __cplusplus > 201703L @@ -12791,43 +12979,43 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { }); try { size_t alt; - setState(2016); + setState(2045); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 295, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 299, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2002); + setState(2031); oC_NodePattern(); - setState(2009); + setState(2038); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 294, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 298, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2004); + setState(2033); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2003); + setState(2032); match(CypherParser::SP); } - setState(2006); + setState(2035); oC_PatternElementChain(); } - setState(2011); + setState(2040); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 294, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 298, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2012); + setState(2041); match(CypherParser::T__1); - setState(2013); + setState(2042); oC_PatternElement(); - setState(2014); + setState(2043); match(CypherParser::T__2); break; } @@ -12880,7 +13068,7 @@ size_t CypherParser::OC_NodePatternContext::getRuleIndex() const { CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { OC_NodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, CypherParser::RuleOC_NodePattern); + enterRule(_localctx, 230, CypherParser::RuleOC_NodePattern); size_t _la = 0; #if __cplusplus > 201703L @@ -12892,17 +13080,17 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(2018); + setState(2047); match(CypherParser::T__1); - setState(2020); + setState(2049); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2019); + setState(2048); match(CypherParser::SP); } - setState(2026); + setState(2055); _errHandler->sync(this); _la = _input->LA(1); @@ -12910,50 +13098,50 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(2022); + setState(2051); oC_Variable(); - setState(2024); + setState(2053); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2023); + setState(2052); match(CypherParser::SP); } } - setState(2032); + setState(2061); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(2028); + setState(2057); oC_NodeLabels(); - setState(2030); + setState(2059); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2029); + setState(2058); match(CypherParser::SP); } } - setState(2038); + setState(2067); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(2034); + setState(2063); iC_Properties(); - setState(2036); + setState(2065); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2035); + setState(2064); match(CypherParser::SP); } } - setState(2040); + setState(2069); match(CypherParser::T__2); } @@ -12992,7 +13180,7 @@ size_t CypherParser::OC_PatternElementChainContext::getRuleIndex() const { CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChain() { OC_PatternElementChainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, CypherParser::RuleOC_PatternElementChain); + enterRule(_localctx, 232, CypherParser::RuleOC_PatternElementChain); size_t _la = 0; #if __cplusplus > 201703L @@ -13004,17 +13192,17 @@ CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChai }); try { enterOuterAlt(_localctx, 1); - setState(2042); + setState(2071); oC_RelationshipPattern(); - setState(2044); + setState(2073); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2043); + setState(2072); match(CypherParser::SP); } - setState(2046); + setState(2075); oC_NodePattern(); } @@ -13069,7 +13257,7 @@ size_t CypherParser::OC_RelationshipPatternContext::getRuleIndex() const { CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPattern() { OC_RelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, CypherParser::RuleOC_RelationshipPattern); + enterRule(_localctx, 234, CypherParser::RuleOC_RelationshipPattern); size_t _la = 0; #if __cplusplus > 201703L @@ -13080,29 +13268,29 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter exitRule(); }); try { - setState(2092); + setState(2121); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 315, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 319, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2048); + setState(2077); oC_LeftArrowHead(); - setState(2050); + setState(2079); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2049); + setState(2078); match(CypherParser::SP); } - setState(2052); + setState(2081); oC_Dash(); - setState(2054); + setState(2083); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 305, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 309, _ctx)) { case 1: { - setState(2053); + setState(2082); match(CypherParser::SP); break; } @@ -13110,37 +13298,37 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(2057); + setState(2086); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(2056); + setState(2085); oC_RelationshipDetail(); } - setState(2060); + setState(2089); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2059); + setState(2088); match(CypherParser::SP); } - setState(2062); + setState(2091); oC_Dash(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2064); + setState(2093); oC_Dash(); - setState(2066); + setState(2095); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 308, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 312, _ctx)) { case 1: { - setState(2065); + setState(2094); match(CypherParser::SP); break; } @@ -13148,47 +13336,47 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(2069); + setState(2098); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(2068); + setState(2097); oC_RelationshipDetail(); } - setState(2072); + setState(2101); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2071); + setState(2100); match(CypherParser::SP); } - setState(2074); + setState(2103); oC_Dash(); - setState(2076); + setState(2105); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2075); + setState(2104); match(CypherParser::SP); } - setState(2078); + setState(2107); oC_RightArrowHead(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2080); + setState(2109); oC_Dash(); - setState(2082); + setState(2111); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 312, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 316, _ctx)) { case 1: { - setState(2081); + setState(2110); match(CypherParser::SP); break; } @@ -13196,23 +13384,23 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(2085); + setState(2114); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(2084); + setState(2113); oC_RelationshipDetail(); } - setState(2088); + setState(2117); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2087); + setState(2116); match(CypherParser::SP); } - setState(2090); + setState(2119); oC_Dash(); break; } @@ -13269,7 +13457,7 @@ size_t CypherParser::OC_RelationshipDetailContext::getRuleIndex() const { CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail() { OC_RelationshipDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, CypherParser::RuleOC_RelationshipDetail); + enterRule(_localctx, 236, CypherParser::RuleOC_RelationshipDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -13281,17 +13469,17 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( }); try { enterOuterAlt(_localctx, 1); - setState(2094); + setState(2123); match(CypherParser::T__6); - setState(2096); + setState(2125); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2095); + setState(2124); match(CypherParser::SP); } - setState(2102); + setState(2131); _errHandler->sync(this); _la = _input->LA(1); @@ -13299,66 +13487,66 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(2098); + setState(2127); oC_Variable(); - setState(2100); + setState(2129); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2099); + setState(2128); match(CypherParser::SP); } } - setState(2108); + setState(2137); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(2104); + setState(2133); oC_RelationshipTypes(); - setState(2106); + setState(2135); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2105); + setState(2134); match(CypherParser::SP); } } - setState(2114); + setState(2143); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::STAR) { - setState(2110); + setState(2139); iC_RecursiveDetail(); - setState(2112); + setState(2141); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2111); + setState(2140); match(CypherParser::SP); } } - setState(2120); + setState(2149); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(2116); + setState(2145); iC_Properties(); - setState(2118); + setState(2147); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2117); + setState(2146); match(CypherParser::SP); } } - setState(2122); + setState(2151); match(CypherParser::T__7); } @@ -13417,7 +13605,7 @@ size_t CypherParser::IC_PropertiesContext::getRuleIndex() const { CypherParser::IC_PropertiesContext* CypherParser::iC_Properties() { IC_PropertiesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, CypherParser::RuleIC_Properties); + enterRule(_localctx, 238, CypherParser::RuleIC_Properties); size_t _la = 0; #if __cplusplus > 201703L @@ -13429,17 +13617,17 @@ CypherParser::IC_PropertiesContext* CypherParser::iC_Properties() { }); try { enterOuterAlt(_localctx, 1); - setState(2124); + setState(2153); match(CypherParser::T__8); - setState(2126); + setState(2155); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2125); + setState(2154); match(CypherParser::SP); } - setState(2161); + setState(2190); _errHandler->sync(this); _la = _input->LA(1); @@ -13447,86 +13635,86 @@ CypherParser::IC_PropertiesContext* CypherParser::iC_Properties() { ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { - setState(2128); + setState(2157); oC_PropertyKeyName(); - setState(2130); + setState(2159); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2129); + setState(2158); match(CypherParser::SP); } - setState(2132); + setState(2161); match(CypherParser::COLON); - setState(2134); + setState(2163); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2133); + setState(2162); match(CypherParser::SP); } - setState(2136); + setState(2165); oC_Expression(); - setState(2138); + setState(2167); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2137); + setState(2166); match(CypherParser::SP); } - setState(2158); + setState(2187); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2140); + setState(2169); match(CypherParser::T__3); - setState(2142); + setState(2171); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2141); + setState(2170); match(CypherParser::SP); } - setState(2144); + setState(2173); oC_PropertyKeyName(); - setState(2146); + setState(2175); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2145); + setState(2174); match(CypherParser::SP); } - setState(2148); + setState(2177); match(CypherParser::COLON); - setState(2150); + setState(2179); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2149); + setState(2178); match(CypherParser::SP); } - setState(2152); + setState(2181); oC_Expression(); - setState(2154); + setState(2183); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2153); + setState(2182); match(CypherParser::SP); } - setState(2160); + setState(2189); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2163); + setState(2192); match(CypherParser::T__9); } @@ -13577,7 +13765,7 @@ size_t CypherParser::OC_RelationshipTypesContext::getRuleIndex() const { CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() { OC_RelationshipTypesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, CypherParser::RuleOC_RelationshipTypes); + enterRule(_localctx, 240, CypherParser::RuleOC_RelationshipTypes); size_t _la = 0; #if __cplusplus > 201703L @@ -13590,55 +13778,55 @@ CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2165); + setState(2194); match(CypherParser::COLON); - setState(2167); + setState(2196); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2166); + setState(2195); match(CypherParser::SP); } - setState(2169); + setState(2198); oC_RelTypeName(); - setState(2183); + setState(2212); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 339, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 343, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2171); + setState(2200); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2170); + setState(2199); match(CypherParser::SP); } - setState(2173); + setState(2202); match(CypherParser::T__10); - setState(2175); + setState(2204); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(2174); + setState(2203); match(CypherParser::COLON); } - setState(2178); + setState(2207); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2177); + setState(2206); match(CypherParser::SP); } - setState(2180); + setState(2209); oC_RelTypeName(); } - setState(2185); + setState(2214); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 339, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 343, _ctx); } } @@ -13689,7 +13877,7 @@ size_t CypherParser::OC_NodeLabelsContext::getRuleIndex() const { CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { OC_NodeLabelsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, CypherParser::RuleOC_NodeLabels); + enterRule(_localctx, 242, CypherParser::RuleOC_NodeLabels); size_t _la = 0; #if __cplusplus > 201703L @@ -13702,50 +13890,50 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2186); + setState(2215); match(CypherParser::COLON); - setState(2188); + setState(2217); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2187); + setState(2216); match(CypherParser::SP); } - setState(2190); + setState(2219); oC_LabelName(); - setState(2207); + setState(2236); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 349, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2192); + setState(2221); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2191); + setState(2220); match(CypherParser::SP); } - setState(2199); + setState(2228); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__10: { - setState(2194); + setState(2223); match(CypherParser::T__10); - setState(2196); + setState(2225); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(2195); + setState(2224); match(CypherParser::COLON); } break; } case CypherParser::COLON: { - setState(2198); + setState(2227); match(CypherParser::COLON); break; } @@ -13753,20 +13941,20 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { default: throw NoViableAltException(this); } - setState(2202); + setState(2231); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2201); + setState(2230); match(CypherParser::SP); } - setState(2204); + setState(2233); oC_LabelName(); } - setState(2209); + setState(2238); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 349, _ctx); } } @@ -13817,7 +14005,7 @@ size_t CypherParser::IC_RecursiveDetailContext::getRuleIndex() const { CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { IC_RecursiveDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, CypherParser::RuleIC_RecursiveDetail); + enterRule(_localctx, 244, CypherParser::RuleIC_RecursiveDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -13829,22 +14017,22 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { }); try { enterOuterAlt(_localctx, 1); - setState(2210); + setState(2239); match(CypherParser::STAR); - setState(2215); + setState(2244); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 347, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 351, _ctx)) { case 1: { - setState(2212); + setState(2241); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2211); + setState(2240); match(CypherParser::SP); } - setState(2214); + setState(2243); iC_RecursiveType(); break; } @@ -13852,17 +14040,17 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { default: break; } - setState(2221); + setState(2250); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 349, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 353, _ctx)) { case 1: { - setState(2218); + setState(2247); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 348, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 352, _ctx)) { case 1: { - setState(2217); + setState(2246); match(CypherParser::SP); break; } @@ -13870,7 +14058,7 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { default: break; } - setState(2220); + setState(2249); oC_RangeLiteral(); break; } @@ -13878,20 +14066,20 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { default: break; } - setState(2227); + setState(2256); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 351, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 355, _ctx)) { case 1: { - setState(2224); + setState(2253); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2223); + setState(2252); match(CypherParser::SP); } - setState(2226); + setState(2255); iC_RecursiveComprehension(); break; } @@ -13956,7 +14144,7 @@ size_t CypherParser::IC_RecursiveTypeContext::getRuleIndex() const { CypherParser::IC_RecursiveTypeContext* CypherParser::iC_RecursiveType() { IC_RecursiveTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, CypherParser::RuleIC_RecursiveType); + enterRule(_localctx, 246, CypherParser::RuleIC_RecursiveType); size_t _la = 0; #if __cplusplus > 201703L @@ -13967,84 +14155,84 @@ CypherParser::IC_RecursiveTypeContext* CypherParser::iC_RecursiveType() { exitRule(); }); try { - setState(2253); + setState(2282); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 356, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 360, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2231); + setState(2260); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::ALL) { - setState(2229); + setState(2258); match(CypherParser::ALL); - setState(2230); + setState(2259); match(CypherParser::SP); } - setState(2233); + setState(2262); match(CypherParser::WSHORTEST); - setState(2235); + setState(2264); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2234); + setState(2263); match(CypherParser::SP); } - setState(2237); + setState(2266); match(CypherParser::T__1); - setState(2239); + setState(2268); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2238); + setState(2267); match(CypherParser::SP); } - setState(2241); + setState(2270); oC_PropertyKeyName(); - setState(2243); + setState(2272); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2242); + setState(2271); match(CypherParser::SP); } - setState(2245); + setState(2274); match(CypherParser::T__2); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2247); + setState(2276); match(CypherParser::SHORTEST); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2248); + setState(2277); match(CypherParser::ALL); - setState(2249); + setState(2278); match(CypherParser::SP); - setState(2250); + setState(2279); match(CypherParser::SHORTEST); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2251); + setState(2280); match(CypherParser::TRAIL); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2252); + setState(2281); match(CypherParser::ACYCLIC); break; } @@ -14101,7 +14289,7 @@ size_t CypherParser::OC_RangeLiteralContext::getRuleIndex() const { CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { OC_RangeLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, CypherParser::RuleOC_RangeLiteral); + enterRule(_localctx, 248, CypherParser::RuleOC_RangeLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -14112,35 +14300,35 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { exitRule(); }); try { - setState(2269); + setState(2298); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 361, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 365, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2256); + setState(2285); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(2255); + setState(2284); oC_LowerBound(); } - setState(2259); + setState(2288); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2258); + setState(2287); match(CypherParser::SP); } - setState(2261); + setState(2290); match(CypherParser::DOTDOT); - setState(2263); + setState(2292); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 359, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 363, _ctx)) { case 1: { - setState(2262); + setState(2291); match(CypherParser::SP); break; } @@ -14148,12 +14336,12 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(2266); + setState(2295); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(2265); + setState(2294); oC_UpperBound(); } break; @@ -14161,7 +14349,7 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { case 2: { enterOuterAlt(_localctx, 2); - setState(2268); + setState(2297); oC_IntegerLiteral(); break; } @@ -14222,7 +14410,7 @@ size_t CypherParser::IC_RecursiveComprehensionContext::getRuleIndex() const { CypherParser::IC_RecursiveComprehensionContext* CypherParser::iC_RecursiveComprehension() { IC_RecursiveComprehensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, CypherParser::RuleIC_RecursiveComprehension); + enterRule(_localctx, 250, CypherParser::RuleIC_RecursiveComprehension); size_t _la = 0; #if __cplusplus > 201703L @@ -14234,69 +14422,69 @@ CypherParser::IC_RecursiveComprehensionContext* CypherParser::iC_RecursiveCompre }); try { enterOuterAlt(_localctx, 1); - setState(2271); + setState(2300); match(CypherParser::T__1); - setState(2273); + setState(2302); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2272); + setState(2301); match(CypherParser::SP); } - setState(2275); + setState(2304); oC_Variable(); - setState(2277); + setState(2306); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2276); + setState(2305); match(CypherParser::SP); } - setState(2279); + setState(2308); match(CypherParser::T__3); - setState(2281); + setState(2310); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2280); + setState(2309); match(CypherParser::SP); } - setState(2283); + setState(2312); oC_Variable(); - setState(2295); + setState(2324); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 368, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 372, _ctx)) { case 1: { - setState(2285); + setState(2314); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2284); + setState(2313); match(CypherParser::SP); } - setState(2287); + setState(2316); match(CypherParser::T__10); - setState(2289); + setState(2318); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2288); + setState(2317); match(CypherParser::SP); } - setState(2291); + setState(2320); oC_Where(); - setState(2293); + setState(2322); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 367, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 371, _ctx)) { case 1: { - setState(2292); + setState(2321); match(CypherParser::SP); break; } @@ -14310,61 +14498,61 @@ CypherParser::IC_RecursiveComprehensionContext* CypherParser::iC_RecursiveCompre default: break; } - setState(2316); + setState(2345); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__10 || _la == CypherParser::SP) { - setState(2298); + setState(2327); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2297); + setState(2326); match(CypherParser::SP); } - setState(2300); + setState(2329); match(CypherParser::T__10); - setState(2302); + setState(2331); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2301); + setState(2330); match(CypherParser::SP); } - setState(2304); + setState(2333); iC_RecursiveProjectionItems(); - setState(2306); + setState(2335); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2305); + setState(2334); match(CypherParser::SP); } - setState(2308); + setState(2337); match(CypherParser::T__3); - setState(2310); + setState(2339); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2309); + setState(2338); match(CypherParser::SP); } - setState(2312); + setState(2341); iC_RecursiveProjectionItems(); - setState(2314); + setState(2343); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2313); + setState(2342); match(CypherParser::SP); } } - setState(2318); + setState(2347); match(CypherParser::T__2); } @@ -14403,7 +14591,7 @@ size_t CypherParser::IC_RecursiveProjectionItemsContext::getRuleIndex() const { CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProjectionItems() { IC_RecursiveProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, CypherParser::RuleIC_RecursiveProjectionItems); + enterRule(_localctx, 252, CypherParser::RuleIC_RecursiveProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -14415,14 +14603,14 @@ CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProj }); try { enterOuterAlt(_localctx, 1); - setState(2320); + setState(2349); match(CypherParser::T__8); - setState(2322); + setState(2351); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 375, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 379, _ctx)) { case 1: { - setState(2321); + setState(2350); match(CypherParser::SP); break; } @@ -14430,7 +14618,7 @@ CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProj default: break; } - setState(2325); + setState(2354); _errHandler->sync(this); _la = _input->LA(1); @@ -14438,18 +14626,18 @@ CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProj ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 87878604057858743) != 0)) { - setState(2324); + setState(2353); oC_ProjectionItems(); } - setState(2328); + setState(2357); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2327); + setState(2356); match(CypherParser::SP); } - setState(2330); + setState(2359); match(CypherParser::T__9); } @@ -14480,7 +14668,7 @@ size_t CypherParser::OC_LowerBoundContext::getRuleIndex() const { CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { OC_LowerBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, CypherParser::RuleOC_LowerBound); + enterRule(_localctx, 254, CypherParser::RuleOC_LowerBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14491,7 +14679,7 @@ CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { }); try { enterOuterAlt(_localctx, 1); - setState(2332); + setState(2361); match(CypherParser::DecimalInteger); } @@ -14522,7 +14710,7 @@ size_t CypherParser::OC_UpperBoundContext::getRuleIndex() const { CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { OC_UpperBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, CypherParser::RuleOC_UpperBound); + enterRule(_localctx, 256, CypherParser::RuleOC_UpperBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14533,7 +14721,7 @@ CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { }); try { enterOuterAlt(_localctx, 1); - setState(2334); + setState(2363); match(CypherParser::DecimalInteger); } @@ -14568,7 +14756,7 @@ size_t CypherParser::OC_LabelNameContext::getRuleIndex() const { CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { OC_LabelNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, CypherParser::RuleOC_LabelName); + enterRule(_localctx, 258, CypherParser::RuleOC_LabelName); size_t _la = 0; #if __cplusplus > 201703L @@ -14580,16 +14768,16 @@ CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { }); try { enterOuterAlt(_localctx, 1); - setState(2336); + setState(2365); oC_SchemaName(); - setState(2339); + setState(2368); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__4) { - setState(2337); + setState(2366); match(CypherParser::T__4); - setState(2338); + setState(2367); oC_SchemaName(); } @@ -14621,7 +14809,7 @@ size_t CypherParser::OC_RelTypeNameContext::getRuleIndex() const { CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { OC_RelTypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, CypherParser::RuleOC_RelTypeName); + enterRule(_localctx, 260, CypherParser::RuleOC_RelTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14632,7 +14820,7 @@ CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { }); try { enterOuterAlt(_localctx, 1); - setState(2341); + setState(2370); oC_SchemaName(); } @@ -14663,7 +14851,7 @@ size_t CypherParser::OC_ExpressionContext::getRuleIndex() const { CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { OC_ExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, CypherParser::RuleOC_Expression); + enterRule(_localctx, 262, CypherParser::RuleOC_Expression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14674,7 +14862,7 @@ CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { }); try { enterOuterAlt(_localctx, 1); - setState(2343); + setState(2372); oC_OrExpression(); } @@ -14725,7 +14913,7 @@ size_t CypherParser::OC_OrExpressionContext::getRuleIndex() const { CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { OC_OrExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, CypherParser::RuleOC_OrExpression); + enterRule(_localctx, 264, CypherParser::RuleOC_OrExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14737,25 +14925,25 @@ CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2345); + setState(2374); oC_XorExpression(); - setState(2352); + setState(2381); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 379, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 383, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2346); + setState(2375); match(CypherParser::SP); - setState(2347); + setState(2376); match(CypherParser::OR); - setState(2348); + setState(2377); match(CypherParser::SP); - setState(2349); + setState(2378); oC_XorExpression(); } - setState(2354); + setState(2383); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 379, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 383, _ctx); } } @@ -14806,7 +14994,7 @@ size_t CypherParser::OC_XorExpressionContext::getRuleIndex() const { CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { OC_XorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, CypherParser::RuleOC_XorExpression); + enterRule(_localctx, 266, CypherParser::RuleOC_XorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14818,25 +15006,25 @@ CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2355); + setState(2384); oC_AndExpression(); - setState(2362); + setState(2391); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 380, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 384, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2356); + setState(2385); match(CypherParser::SP); - setState(2357); + setState(2386); match(CypherParser::XOR); - setState(2358); + setState(2387); match(CypherParser::SP); - setState(2359); + setState(2388); oC_AndExpression(); } - setState(2364); + setState(2393); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 380, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 384, _ctx); } } @@ -14887,7 +15075,7 @@ size_t CypherParser::OC_AndExpressionContext::getRuleIndex() const { CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { OC_AndExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, CypherParser::RuleOC_AndExpression); + enterRule(_localctx, 268, CypherParser::RuleOC_AndExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14899,25 +15087,25 @@ CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2365); + setState(2394); oC_NotExpression(); - setState(2372); + setState(2401); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 385, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2366); + setState(2395); match(CypherParser::SP); - setState(2367); + setState(2396); match(CypherParser::AND); - setState(2368); + setState(2397); match(CypherParser::SP); - setState(2369); + setState(2398); oC_NotExpression(); } - setState(2374); + setState(2403); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 385, _ctx); } } @@ -14964,7 +15152,7 @@ size_t CypherParser::OC_NotExpressionContext::getRuleIndex() const { CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { OC_NotExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, CypherParser::RuleOC_NotExpression); + enterRule(_localctx, 270, CypherParser::RuleOC_NotExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14976,25 +15164,25 @@ CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(2381); + setState(2410); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::NOT) { - setState(2375); + setState(2404); match(CypherParser::NOT); - setState(2377); + setState(2406); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2376); + setState(2405); match(CypherParser::SP); } - setState(2383); + setState(2412); _errHandler->sync(this); _la = _input->LA(1); } - setState(2384); + setState(2413); oC_ComparisonExpression(); } @@ -15049,7 +15237,7 @@ size_t CypherParser::OC_ComparisonExpressionContext::getRuleIndex() const { CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpression() { OC_ComparisonExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, CypherParser::RuleOC_ComparisonExpression); + enterRule(_localctx, 272, CypherParser::RuleOC_ComparisonExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15061,37 +15249,37 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress }); try { size_t alt; - setState(2434); + setState(2463); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 394, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 398, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2386); + setState(2415); iC_BitwiseOrOperatorExpression(); - setState(2396); + setState(2425); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 386, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 390, _ctx)) { case 1: { - setState(2388); + setState(2417); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2387); + setState(2416); match(CypherParser::SP); } - setState(2390); + setState(2419); iC_ComparisonOperator(); - setState(2392); + setState(2421); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2391); + setState(2420); match(CypherParser::SP); } - setState(2394); + setState(2423); iC_BitwiseOrOperatorExpression(); break; } @@ -15104,28 +15292,28 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 2: { enterOuterAlt(_localctx, 2); - setState(2398); + setState(2427); iC_BitwiseOrOperatorExpression(); - setState(2400); + setState(2429); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2399); + setState(2428); match(CypherParser::SP); } - setState(2402); + setState(2431); antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); - setState(2404); + setState(2433); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2403); + setState(2432); match(CypherParser::SP); } - setState(2406); + setState(2435); iC_BitwiseOrOperatorExpression(); notifyInvalidNotEqualOperator(antlrcpp::downCast(_localctx)->invalid_not_equalToken); break; @@ -15133,53 +15321,53 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 3: { enterOuterAlt(_localctx, 3); - setState(2410); + setState(2439); iC_BitwiseOrOperatorExpression(); - setState(2412); + setState(2441); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2411); + setState(2440); match(CypherParser::SP); } - setState(2414); + setState(2443); iC_ComparisonOperator(); - setState(2416); + setState(2445); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2415); + setState(2444); match(CypherParser::SP); } - setState(2418); + setState(2447); iC_BitwiseOrOperatorExpression(); - setState(2428); + setState(2457); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2420); + setState(2449); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2419); + setState(2448); match(CypherParser::SP); } - setState(2422); + setState(2451); iC_ComparisonOperator(); - setState(2424); + setState(2453); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2423); + setState(2452); match(CypherParser::SP); } - setState(2426); + setState(2455); iC_BitwiseOrOperatorExpression(); break; } @@ -15187,9 +15375,9 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress default: throw NoViableAltException(this); } - setState(2430); + setState(2459); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 393, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 397, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); notifyNonBinaryComparison(_localctx->start); break; @@ -15223,7 +15411,7 @@ size_t CypherParser::IC_ComparisonOperatorContext::getRuleIndex() const { CypherParser::IC_ComparisonOperatorContext* CypherParser::iC_ComparisonOperator() { IC_ComparisonOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, CypherParser::RuleIC_ComparisonOperator); + enterRule(_localctx, 274, CypherParser::RuleIC_ComparisonOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -15235,7 +15423,7 @@ CypherParser::IC_ComparisonOperatorContext* CypherParser::iC_ComparisonOperator( }); try { enterOuterAlt(_localctx, 1); - setState(2436); + setState(2465); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 127040) != 0))) { @@ -15286,7 +15474,7 @@ size_t CypherParser::IC_BitwiseOrOperatorExpressionContext::getRuleIndex() const CypherParser::IC_BitwiseOrOperatorExpressionContext* CypherParser::iC_BitwiseOrOperatorExpression() { IC_BitwiseOrOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, CypherParser::RuleIC_BitwiseOrOperatorExpression); + enterRule(_localctx, 276, CypherParser::RuleIC_BitwiseOrOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15299,37 +15487,37 @@ CypherParser::IC_BitwiseOrOperatorExpressionContext* CypherParser::iC_BitwiseOrO try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2438); + setState(2467); iC_BitwiseAndOperatorExpression(); - setState(2449); + setState(2478); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 397, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 401, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2440); + setState(2469); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2439); + setState(2468); match(CypherParser::SP); } - setState(2442); + setState(2471); match(CypherParser::T__10); - setState(2444); + setState(2473); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2443); + setState(2472); match(CypherParser::SP); } - setState(2446); + setState(2475); iC_BitwiseAndOperatorExpression(); } - setState(2451); + setState(2480); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 397, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 401, _ctx); } } @@ -15372,7 +15560,7 @@ size_t CypherParser::IC_BitwiseAndOperatorExpressionContext::getRuleIndex() cons CypherParser::IC_BitwiseAndOperatorExpressionContext* CypherParser::iC_BitwiseAndOperatorExpression() { IC_BitwiseAndOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, CypherParser::RuleIC_BitwiseAndOperatorExpression); + enterRule(_localctx, 278, CypherParser::RuleIC_BitwiseAndOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15385,37 +15573,37 @@ CypherParser::IC_BitwiseAndOperatorExpressionContext* CypherParser::iC_BitwiseAn try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2452); + setState(2481); iC_BitShiftOperatorExpression(); - setState(2463); + setState(2492); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 400, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 404, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2454); + setState(2483); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2453); + setState(2482); match(CypherParser::SP); } - setState(2456); + setState(2485); match(CypherParser::T__16); - setState(2458); + setState(2487); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2457); + setState(2486); match(CypherParser::SP); } - setState(2460); + setState(2489); iC_BitShiftOperatorExpression(); } - setState(2465); + setState(2494); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 400, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 404, _ctx); } } @@ -15466,7 +15654,7 @@ size_t CypherParser::IC_BitShiftOperatorExpressionContext::getRuleIndex() const CypherParser::IC_BitShiftOperatorExpressionContext* CypherParser::iC_BitShiftOperatorExpression() { IC_BitShiftOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 276, CypherParser::RuleIC_BitShiftOperatorExpression); + enterRule(_localctx, 280, CypherParser::RuleIC_BitShiftOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15479,37 +15667,37 @@ CypherParser::IC_BitShiftOperatorExpressionContext* CypherParser::iC_BitShiftOpe try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2466); + setState(2495); oC_AddOrSubtractExpression(); - setState(2478); + setState(2507); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 403, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 407, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2468); + setState(2497); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2467); + setState(2496); match(CypherParser::SP); } - setState(2470); + setState(2499); iC_BitShiftOperator(); - setState(2472); + setState(2501); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2471); + setState(2500); match(CypherParser::SP); } - setState(2474); + setState(2503); oC_AddOrSubtractExpression(); } - setState(2480); + setState(2509); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 403, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 407, _ctx); } } @@ -15536,7 +15724,7 @@ size_t CypherParser::IC_BitShiftOperatorContext::getRuleIndex() const { CypherParser::IC_BitShiftOperatorContext* CypherParser::iC_BitShiftOperator() { IC_BitShiftOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 278, CypherParser::RuleIC_BitShiftOperator); + enterRule(_localctx, 282, CypherParser::RuleIC_BitShiftOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -15548,7 +15736,7 @@ CypherParser::IC_BitShiftOperatorContext* CypherParser::iC_BitShiftOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(2481); + setState(2510); _la = _input->LA(1); if (!(_la == CypherParser::T__17 @@ -15608,7 +15796,7 @@ size_t CypherParser::OC_AddOrSubtractExpressionContext::getRuleIndex() const { CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractExpression() { OC_AddOrSubtractExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 280, CypherParser::RuleOC_AddOrSubtractExpression); + enterRule(_localctx, 284, CypherParser::RuleOC_AddOrSubtractExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15621,37 +15809,37 @@ CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractE try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2483); + setState(2512); oC_MultiplyDivideModuloExpression(); - setState(2495); + setState(2524); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 406, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 410, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2485); + setState(2514); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2484); + setState(2513); match(CypherParser::SP); } - setState(2487); + setState(2516); iC_AddOrSubtractOperator(); - setState(2489); + setState(2518); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2488); + setState(2517); match(CypherParser::SP); } - setState(2491); + setState(2520); oC_MultiplyDivideModuloExpression(); } - setState(2497); + setState(2526); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 406, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 410, _ctx); } } @@ -15682,7 +15870,7 @@ size_t CypherParser::IC_AddOrSubtractOperatorContext::getRuleIndex() const { CypherParser::IC_AddOrSubtractOperatorContext* CypherParser::iC_AddOrSubtractOperator() { IC_AddOrSubtractOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 282, CypherParser::RuleIC_AddOrSubtractOperator); + enterRule(_localctx, 286, CypherParser::RuleIC_AddOrSubtractOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -15694,7 +15882,7 @@ CypherParser::IC_AddOrSubtractOperatorContext* CypherParser::iC_AddOrSubtractOpe }); try { enterOuterAlt(_localctx, 1); - setState(2498); + setState(2527); _la = _input->LA(1); if (!(_la == CypherParser::T__19 || _la == CypherParser::MINUS)) { _errHandler->recoverInline(this); @@ -15752,7 +15940,7 @@ size_t CypherParser::OC_MultiplyDivideModuloExpressionContext::getRuleIndex() co CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_MultiplyDivideModuloExpression() { OC_MultiplyDivideModuloExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 284, CypherParser::RuleOC_MultiplyDivideModuloExpression); + enterRule(_localctx, 288, CypherParser::RuleOC_MultiplyDivideModuloExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15765,37 +15953,37 @@ CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_Multipl try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2500); + setState(2529); oC_PowerOfExpression(); - setState(2512); + setState(2541); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 409, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 413, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2502); + setState(2531); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2501); + setState(2530); match(CypherParser::SP); } - setState(2504); + setState(2533); iC_MultiplyDivideModuloOperator(); - setState(2506); + setState(2535); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2505); + setState(2534); match(CypherParser::SP); } - setState(2508); + setState(2537); oC_PowerOfExpression(); } - setState(2514); + setState(2543); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 409, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 413, _ctx); } } @@ -15826,7 +16014,7 @@ size_t CypherParser::IC_MultiplyDivideModuloOperatorContext::getRuleIndex() cons CypherParser::IC_MultiplyDivideModuloOperatorContext* CypherParser::iC_MultiplyDivideModuloOperator() { IC_MultiplyDivideModuloOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 286, CypherParser::RuleIC_MultiplyDivideModuloOperator); + enterRule(_localctx, 290, CypherParser::RuleIC_MultiplyDivideModuloOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -15838,7 +16026,7 @@ CypherParser::IC_MultiplyDivideModuloOperatorContext* CypherParser::iC_MultiplyD }); try { enterOuterAlt(_localctx, 1); - setState(2515); + setState(2544); _la = _input->LA(1); if (!(_la == CypherParser::T__20 @@ -15890,7 +16078,7 @@ size_t CypherParser::OC_PowerOfExpressionContext::getRuleIndex() const { CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() { OC_PowerOfExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 288, CypherParser::RuleOC_PowerOfExpression); + enterRule(_localctx, 292, CypherParser::RuleOC_PowerOfExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15903,37 +16091,37 @@ CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2517); + setState(2546); oC_StringListNullOperatorExpression(); - setState(2528); + setState(2557); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 412, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 416, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2519); + setState(2548); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2518); + setState(2547); match(CypherParser::SP); } - setState(2521); + setState(2550); match(CypherParser::T__22); - setState(2523); + setState(2552); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2522); + setState(2551); match(CypherParser::SP); } - setState(2525); + setState(2554); oC_StringListNullOperatorExpression(); } - setState(2530); + setState(2559); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 412, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 416, _ctx); } } @@ -15980,7 +16168,7 @@ size_t CypherParser::OC_StringListNullOperatorExpressionContext::getRuleIndex() CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_StringListNullOperatorExpression() { OC_StringListNullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 290, CypherParser::RuleOC_StringListNullOperatorExpression); + enterRule(_localctx, 294, CypherParser::RuleOC_StringListNullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15992,26 +16180,26 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2531); + setState(2560); oC_UnaryAddSubtractOrFactorialExpression(); - setState(2539); + setState(2568); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 414, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 418, _ctx)) { case 1: { - setState(2532); + setState(2561); oC_StringOperatorExpression(); break; } case 2: { - setState(2534); + setState(2563); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2533); + setState(2562); oC_ListOperatorExpression(); break; } @@ -16019,15 +16207,15 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin default: throw NoViableAltException(this); } - setState(2536); + setState(2565); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 413, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 417, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } case 3: { - setState(2538); + setState(2567); oC_NullOperatorExpression(); break; } @@ -16092,7 +16280,7 @@ size_t CypherParser::OC_ListOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExpression() { OC_ListOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 292, CypherParser::RuleOC_ListOperatorExpression); + enterRule(_localctx, 296, CypherParser::RuleOC_ListOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -16103,44 +16291,44 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp exitRule(); }); try { - setState(2560); + setState(2589); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 418, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 422, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2541); + setState(2570); match(CypherParser::SP); - setState(2542); + setState(2571); match(CypherParser::IN); - setState(2544); + setState(2573); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2543); + setState(2572); match(CypherParser::SP); } - setState(2546); + setState(2575); oC_PropertyOrLabelsExpression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2547); + setState(2576); match(CypherParser::T__6); - setState(2548); + setState(2577); oC_Expression(); - setState(2549); + setState(2578); match(CypherParser::T__7); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2551); + setState(2580); match(CypherParser::T__6); - setState(2553); + setState(2582); _errHandler->sync(this); _la = _input->LA(1); @@ -16148,10 +16336,10 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { - setState(2552); + setState(2581); oC_Expression(); } - setState(2555); + setState(2584); _la = _input->LA(1); if (!(_la == CypherParser::COLON @@ -16162,7 +16350,7 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp _errHandler->reportMatch(this); consume(); } - setState(2557); + setState(2586); _errHandler->sync(this); _la = _input->LA(1); @@ -16170,10 +16358,10 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { - setState(2556); + setState(2585); oC_Expression(); } - setState(2559); + setState(2588); match(CypherParser::T__7); break; } @@ -16238,7 +16426,7 @@ size_t CypherParser::OC_StringOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperatorExpression() { OC_StringOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 294, CypherParser::RuleOC_StringOperatorExpression); + enterRule(_localctx, 298, CypherParser::RuleOC_StringOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -16250,43 +16438,43 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato }); try { enterOuterAlt(_localctx, 1); - setState(2573); + setState(2602); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 419, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 423, _ctx)) { case 1: { - setState(2562); + setState(2591); oC_RegularExpression(); break; } case 2: { - setState(2563); + setState(2592); match(CypherParser::SP); - setState(2564); + setState(2593); match(CypherParser::STARTS); - setState(2565); + setState(2594); match(CypherParser::SP); - setState(2566); + setState(2595); match(CypherParser::WITH); break; } case 3: { - setState(2567); + setState(2596); match(CypherParser::SP); - setState(2568); + setState(2597); match(CypherParser::ENDS); - setState(2569); + setState(2598); match(CypherParser::SP); - setState(2570); + setState(2599); match(CypherParser::WITH); break; } case 4: { - setState(2571); + setState(2600); match(CypherParser::SP); - setState(2572); + setState(2601); match(CypherParser::CONTAINS); break; } @@ -16294,15 +16482,15 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato default: break; } - setState(2576); + setState(2605); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2575); + setState(2604); match(CypherParser::SP); } - setState(2578); + setState(2607); oC_PropertyOrLabelsExpression(); } @@ -16333,7 +16521,7 @@ size_t CypherParser::OC_RegularExpressionContext::getRuleIndex() const { CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() { OC_RegularExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 296, CypherParser::RuleOC_RegularExpression); + enterRule(_localctx, 300, CypherParser::RuleOC_RegularExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -16345,15 +16533,15 @@ CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() }); try { enterOuterAlt(_localctx, 1); - setState(2581); + setState(2610); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2580); + setState(2609); match(CypherParser::SP); } - setState(2583); + setState(2612); match(CypherParser::T__23); } @@ -16400,7 +16588,7 @@ size_t CypherParser::OC_NullOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExpression() { OC_NullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 298, CypherParser::RuleOC_NullOperatorExpression); + enterRule(_localctx, 302, CypherParser::RuleOC_NullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16410,35 +16598,35 @@ CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExp exitRule(); }); try { - setState(2595); + setState(2624); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 422, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 426, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2585); + setState(2614); match(CypherParser::SP); - setState(2586); + setState(2615); match(CypherParser::IS); - setState(2587); + setState(2616); match(CypherParser::SP); - setState(2588); + setState(2617); match(CypherParser::NULL_); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2589); + setState(2618); match(CypherParser::SP); - setState(2590); + setState(2619); match(CypherParser::IS); - setState(2591); + setState(2620); match(CypherParser::SP); - setState(2592); + setState(2621); match(CypherParser::NOT); - setState(2593); + setState(2622); match(CypherParser::SP); - setState(2594); + setState(2623); match(CypherParser::NULL_); break; } @@ -16495,7 +16683,7 @@ size_t CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext::getRuleInd CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_UnaryAddSubtractOrFactorialExpression() { OC_UnaryAddSubtractOrFactorialExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 300, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); + enterRule(_localctx, 304, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -16507,40 +16695,40 @@ CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_ }); try { enterOuterAlt(_localctx, 1); - setState(2603); + setState(2632); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::MINUS) { - setState(2597); + setState(2626); match(CypherParser::MINUS); - setState(2599); + setState(2628); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2598); + setState(2627); match(CypherParser::SP); } - setState(2605); + setState(2634); _errHandler->sync(this); _la = _input->LA(1); } - setState(2606); + setState(2635); oC_PropertyOrLabelsExpression(); - setState(2611); + setState(2640); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 426, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 430, _ctx)) { case 1: { - setState(2608); + setState(2637); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2607); + setState(2636); match(CypherParser::SP); } - setState(2610); + setState(2639); match(CypherParser::FACTORIAL); break; } @@ -16593,7 +16781,7 @@ size_t CypherParser::OC_PropertyOrLabelsExpressionContext::getRuleIndex() const CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrLabelsExpression() { OC_PropertyOrLabelsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 302, CypherParser::RuleOC_PropertyOrLabelsExpression); + enterRule(_localctx, 306, CypherParser::RuleOC_PropertyOrLabelsExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -16606,27 +16794,27 @@ CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrL try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2613); + setState(2642); oC_Atom(); - setState(2620); + setState(2649); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 428, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 432, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2615); + setState(2644); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2614); + setState(2643); match(CypherParser::SP); } - setState(2617); + setState(2646); oC_PropertyLookup(); } - setState(2622); + setState(2651); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 428, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 432, _ctx); } } @@ -16689,7 +16877,7 @@ size_t CypherParser::OC_AtomContext::getRuleIndex() const { CypherParser::OC_AtomContext* CypherParser::oC_Atom() { OC_AtomContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 304, CypherParser::RuleOC_Atom); + enterRule(_localctx, 308, CypherParser::RuleOC_Atom); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16699,68 +16887,68 @@ CypherParser::OC_AtomContext* CypherParser::oC_Atom() { exitRule(); }); try { - setState(2632); + setState(2661); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 429, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 433, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2623); + setState(2652); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2624); + setState(2653); oC_Parameter(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2625); + setState(2654); oC_CaseExpression(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2626); + setState(2655); oC_ParenthesizedExpression(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2627); + setState(2656); oC_FunctionInvocation(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(2628); + setState(2657); oC_PathPatterns(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(2629); + setState(2658); oC_ExistCountSubquery(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(2630); + setState(2659); oC_Variable(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(2631); + setState(2660); oC_Quantifier(); break; } @@ -16821,7 +17009,7 @@ size_t CypherParser::OC_QuantifierContext::getRuleIndex() const { CypherParser::OC_QuantifierContext* CypherParser::oC_Quantifier() { OC_QuantifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 306, CypherParser::RuleOC_Quantifier); + enterRule(_localctx, 310, CypherParser::RuleOC_Quantifier); size_t _la = 0; #if __cplusplus > 201703L @@ -16832,153 +17020,153 @@ CypherParser::OC_QuantifierContext* CypherParser::oC_Quantifier() { exitRule(); }); try { - setState(2690); + setState(2719); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ALL: { enterOuterAlt(_localctx, 1); - setState(2634); + setState(2663); match(CypherParser::ALL); - setState(2636); + setState(2665); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2635); + setState(2664); match(CypherParser::SP); } - setState(2638); + setState(2667); match(CypherParser::T__1); - setState(2640); + setState(2669); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2639); + setState(2668); match(CypherParser::SP); } - setState(2642); + setState(2671); oC_FilterExpression(); - setState(2644); + setState(2673); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2643); + setState(2672); match(CypherParser::SP); } - setState(2646); + setState(2675); match(CypherParser::T__2); break; } case CypherParser::ANY: { enterOuterAlt(_localctx, 2); - setState(2648); + setState(2677); match(CypherParser::ANY); - setState(2650); + setState(2679); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2649); + setState(2678); match(CypherParser::SP); } - setState(2652); + setState(2681); match(CypherParser::T__1); - setState(2654); + setState(2683); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2653); + setState(2682); match(CypherParser::SP); } - setState(2656); + setState(2685); oC_FilterExpression(); - setState(2658); + setState(2687); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2657); + setState(2686); match(CypherParser::SP); } - setState(2660); + setState(2689); match(CypherParser::T__2); break; } case CypherParser::NONE: { enterOuterAlt(_localctx, 3); - setState(2662); + setState(2691); match(CypherParser::NONE); - setState(2664); + setState(2693); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2663); + setState(2692); match(CypherParser::SP); } - setState(2666); + setState(2695); match(CypherParser::T__1); - setState(2668); + setState(2697); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2667); + setState(2696); match(CypherParser::SP); } - setState(2670); + setState(2699); oC_FilterExpression(); - setState(2672); + setState(2701); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2671); + setState(2700); match(CypherParser::SP); } - setState(2674); + setState(2703); match(CypherParser::T__2); break; } case CypherParser::SINGLE: { enterOuterAlt(_localctx, 4); - setState(2676); + setState(2705); match(CypherParser::SINGLE); - setState(2678); + setState(2707); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2677); + setState(2706); match(CypherParser::SP); } - setState(2680); + setState(2709); match(CypherParser::T__1); - setState(2682); + setState(2711); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2681); + setState(2710); match(CypherParser::SP); } - setState(2684); + setState(2713); oC_FilterExpression(); - setState(2686); + setState(2715); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2685); + setState(2714); match(CypherParser::SP); } - setState(2688); + setState(2717); match(CypherParser::T__2); break; } @@ -17023,7 +17211,7 @@ size_t CypherParser::OC_FilterExpressionContext::getRuleIndex() const { CypherParser::OC_FilterExpressionContext* CypherParser::oC_FilterExpression() { OC_FilterExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 308, CypherParser::RuleOC_FilterExpression); + enterRule(_localctx, 312, CypherParser::RuleOC_FilterExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17034,11 +17222,11 @@ CypherParser::OC_FilterExpressionContext* CypherParser::oC_FilterExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(2692); + setState(2721); oC_IdInColl(); - setState(2693); + setState(2722); match(CypherParser::SP); - setState(2694); + setState(2723); oC_Where(); } @@ -17085,7 +17273,7 @@ size_t CypherParser::OC_IdInCollContext::getRuleIndex() const { CypherParser::OC_IdInCollContext* CypherParser::oC_IdInColl() { OC_IdInCollContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 310, CypherParser::RuleOC_IdInColl); + enterRule(_localctx, 314, CypherParser::RuleOC_IdInColl); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17096,15 +17284,15 @@ CypherParser::OC_IdInCollContext* CypherParser::oC_IdInColl() { }); try { enterOuterAlt(_localctx, 1); - setState(2696); + setState(2725); oC_Variable(); - setState(2697); + setState(2726); match(CypherParser::SP); - setState(2698); + setState(2727); match(CypherParser::IN); - setState(2699); + setState(2728); match(CypherParser::SP); - setState(2700); + setState(2729); oC_Expression(); } @@ -17155,7 +17343,7 @@ size_t CypherParser::OC_LiteralContext::getRuleIndex() const { CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { OC_LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 312, CypherParser::RuleOC_Literal); + enterRule(_localctx, 316, CypherParser::RuleOC_Literal); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17165,21 +17353,21 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { exitRule(); }); try { - setState(2708); + setState(2737); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::DecimalInteger: case CypherParser::ExponentDecimalReal: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2702); + setState(2731); oC_NumberLiteral(); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(2703); + setState(2732); match(CypherParser::StringLiteral); break; } @@ -17187,28 +17375,28 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { case CypherParser::FALSE: case CypherParser::TRUE: { enterOuterAlt(_localctx, 3); - setState(2704); + setState(2733); oC_BooleanLiteral(); break; } case CypherParser::NULL_: { enterOuterAlt(_localctx, 4); - setState(2705); + setState(2734); match(CypherParser::NULL_); break; } case CypherParser::T__6: { enterOuterAlt(_localctx, 5); - setState(2706); + setState(2735); oC_ListLiteral(); break; } case CypherParser::T__8: { enterOuterAlt(_localctx, 6); - setState(2707); + setState(2736); iC_StructLiteral(); break; } @@ -17249,7 +17437,7 @@ size_t CypherParser::OC_BooleanLiteralContext::getRuleIndex() const { CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { OC_BooleanLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 314, CypherParser::RuleOC_BooleanLiteral); + enterRule(_localctx, 318, CypherParser::RuleOC_BooleanLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -17261,7 +17449,7 @@ CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2710); + setState(2739); _la = _input->LA(1); if (!(_la == CypherParser::FALSE @@ -17317,7 +17505,7 @@ size_t CypherParser::OC_ListLiteralContext::getRuleIndex() const { CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { OC_ListLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 316, CypherParser::RuleOC_ListLiteral); + enterRule(_localctx, 320, CypherParser::RuleOC_ListLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -17329,17 +17517,17 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2712); + setState(2741); match(CypherParser::T__6); - setState(2714); + setState(2743); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2713); + setState(2742); match(CypherParser::SP); } - setState(2729); + setState(2758); _errHandler->sync(this); _la = _input->LA(1); @@ -17347,36 +17535,36 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { - setState(2716); + setState(2745); oC_Expression(); - setState(2718); + setState(2747); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2717); + setState(2746); match(CypherParser::SP); } - setState(2726); + setState(2755); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2720); + setState(2749); iC_ListEntry(); - setState(2722); + setState(2751); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2721); + setState(2750); match(CypherParser::SP); } - setState(2728); + setState(2757); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2731); + setState(2760); match(CypherParser::T__7); } @@ -17411,7 +17599,7 @@ size_t CypherParser::IC_ListEntryContext::getRuleIndex() const { CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { IC_ListEntryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 318, CypherParser::RuleIC_ListEntry); + enterRule(_localctx, 322, CypherParser::RuleIC_ListEntry); size_t _la = 0; #if __cplusplus > 201703L @@ -17423,14 +17611,14 @@ CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { }); try { enterOuterAlt(_localctx, 1); - setState(2733); + setState(2762); match(CypherParser::T__3); - setState(2735); + setState(2764); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 449, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 453, _ctx)) { case 1: { - setState(2734); + setState(2763); match(CypherParser::SP); break; } @@ -17438,7 +17626,7 @@ CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { default: break; } - setState(2738); + setState(2767); _errHandler->sync(this); _la = _input->LA(1); @@ -17446,7 +17634,7 @@ CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { - setState(2737); + setState(2766); oC_Expression(); } @@ -17490,7 +17678,7 @@ size_t CypherParser::IC_StructLiteralContext::getRuleIndex() const { CypherParser::IC_StructLiteralContext* CypherParser::iC_StructLiteral() { IC_StructLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 320, CypherParser::RuleIC_StructLiteral); + enterRule(_localctx, 324, CypherParser::RuleIC_StructLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -17502,55 +17690,55 @@ CypherParser::IC_StructLiteralContext* CypherParser::iC_StructLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2740); + setState(2769); match(CypherParser::T__8); - setState(2742); + setState(2771); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2741); + setState(2770); match(CypherParser::SP); } - setState(2744); + setState(2773); iC_StructField(); - setState(2746); + setState(2775); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2745); + setState(2774); match(CypherParser::SP); } - setState(2758); + setState(2787); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2748); + setState(2777); match(CypherParser::T__3); - setState(2750); + setState(2779); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2749); + setState(2778); match(CypherParser::SP); } - setState(2752); + setState(2781); iC_StructField(); - setState(2754); + setState(2783); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2753); + setState(2782); match(CypherParser::SP); } - setState(2760); + setState(2789); _errHandler->sync(this); _la = _input->LA(1); } - setState(2761); + setState(2790); match(CypherParser::T__9); } @@ -17601,7 +17789,7 @@ size_t CypherParser::IC_StructFieldContext::getRuleIndex() const { CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { IC_StructFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 322, CypherParser::RuleIC_StructField); + enterRule(_localctx, 326, CypherParser::RuleIC_StructField); size_t _la = 0; #if __cplusplus > 201703L @@ -17613,7 +17801,7 @@ CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { }); try { enterOuterAlt(_localctx, 1); - setState(2765); + setState(2794); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -17681,13 +17869,13 @@ CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2763); + setState(2792); oC_SymbolicName(); break; } case CypherParser::StringLiteral: { - setState(2764); + setState(2793); match(CypherParser::StringLiteral); break; } @@ -17695,25 +17883,25 @@ CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { default: throw NoViableAltException(this); } - setState(2768); + setState(2797); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2767); + setState(2796); match(CypherParser::SP); } - setState(2770); + setState(2799); match(CypherParser::COLON); - setState(2772); + setState(2801); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2771); + setState(2800); match(CypherParser::SP); } - setState(2774); + setState(2803); oC_Expression(); } @@ -17752,7 +17940,7 @@ size_t CypherParser::OC_ParenthesizedExpressionContext::getRuleIndex() const { CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedExpression() { OC_ParenthesizedExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 324, CypherParser::RuleOC_ParenthesizedExpression); + enterRule(_localctx, 328, CypherParser::RuleOC_ParenthesizedExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -17764,27 +17952,27 @@ CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedE }); try { enterOuterAlt(_localctx, 1); - setState(2776); + setState(2805); match(CypherParser::T__1); - setState(2778); + setState(2807); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2777); + setState(2806); match(CypherParser::SP); } - setState(2780); + setState(2809); oC_Expression(); - setState(2782); + setState(2811); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2781); + setState(2810); match(CypherParser::SP); } - setState(2784); + setState(2813); match(CypherParser::T__2); } @@ -17855,7 +18043,7 @@ size_t CypherParser::OC_FunctionInvocationContext::getRuleIndex() const { CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation() { OC_FunctionInvocationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 326, CypherParser::RuleOC_FunctionInvocation); + enterRule(_localctx, 330, CypherParser::RuleOC_FunctionInvocation); size_t _la = 0; #if __cplusplus > 201703L @@ -17866,109 +18054,109 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( exitRule(); }); try { - setState(2863); + setState(2892); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 480, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 484, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2786); + setState(2815); match(CypherParser::COUNT); - setState(2788); + setState(2817); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2787); + setState(2816); match(CypherParser::SP); } - setState(2790); + setState(2819); match(CypherParser::T__1); - setState(2792); + setState(2821); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2791); + setState(2820); match(CypherParser::SP); } - setState(2794); + setState(2823); match(CypherParser::STAR); - setState(2796); + setState(2825); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2795); + setState(2824); match(CypherParser::SP); } - setState(2798); + setState(2827); match(CypherParser::T__2); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2799); + setState(2828); match(CypherParser::CAST); - setState(2801); + setState(2830); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2800); + setState(2829); match(CypherParser::SP); } - setState(2803); + setState(2832); match(CypherParser::T__1); - setState(2805); + setState(2834); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2804); + setState(2833); match(CypherParser::SP); } - setState(2807); + setState(2836); iC_FunctionParameter(); - setState(2809); + setState(2838); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2808); + setState(2837); match(CypherParser::SP); } - setState(2821); + setState(2850); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::AS: { - setState(2811); + setState(2840); match(CypherParser::AS); - setState(2813); + setState(2842); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2812); + setState(2841); match(CypherParser::SP); } - setState(2815); + setState(2844); iC_DataType(0); break; } case CypherParser::T__3: { - setState(2816); + setState(2845); match(CypherParser::T__3); - setState(2818); + setState(2847); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2817); + setState(2846); match(CypherParser::SP); } - setState(2820); + setState(2849); iC_FunctionParameter(); break; } @@ -17976,58 +18164,58 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( default: throw NoViableAltException(this); } - setState(2824); + setState(2853); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2823); + setState(2852); match(CypherParser::SP); } - setState(2826); + setState(2855); match(CypherParser::T__2); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2828); + setState(2857); oC_FunctionName(); - setState(2830); + setState(2859); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2829); + setState(2858); match(CypherParser::SP); } - setState(2832); + setState(2861); match(CypherParser::T__1); - setState(2834); + setState(2863); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2833); + setState(2862); match(CypherParser::SP); } - setState(2840); + setState(2869); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DISTINCT) { - setState(2836); + setState(2865); match(CypherParser::DISTINCT); - setState(2838); + setState(2867); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2837); + setState(2866); match(CypherParser::SP); } } - setState(2859); + setState(2888); _errHandler->sync(this); _la = _input->LA(1); @@ -18035,46 +18223,46 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { - setState(2842); + setState(2871); iC_FunctionParameter(); - setState(2844); + setState(2873); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2843); + setState(2872); match(CypherParser::SP); } - setState(2856); + setState(2885); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2846); + setState(2875); match(CypherParser::T__3); - setState(2848); + setState(2877); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2847); + setState(2876); match(CypherParser::SP); } - setState(2850); + setState(2879); iC_FunctionParameter(); - setState(2852); + setState(2881); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2851); + setState(2880); match(CypherParser::SP); } - setState(2858); + setState(2887); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2861); + setState(2890); match(CypherParser::T__2); break; } @@ -18111,7 +18299,7 @@ size_t CypherParser::OC_FunctionNameContext::getRuleIndex() const { CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { OC_FunctionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 328, CypherParser::RuleOC_FunctionName); + enterRule(_localctx, 332, CypherParser::RuleOC_FunctionName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18122,7 +18310,7 @@ CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { }); try { enterOuterAlt(_localctx, 1); - setState(2865); + setState(2894); oC_SymbolicName(); } @@ -18173,7 +18361,7 @@ size_t CypherParser::IC_FunctionParameterContext::getRuleIndex() const { CypherParser::IC_FunctionParameterContext* CypherParser::iC_FunctionParameter() { IC_FunctionParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 330, CypherParser::RuleIC_FunctionParameter); + enterRule(_localctx, 334, CypherParser::RuleIC_FunctionParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -18184,36 +18372,36 @@ CypherParser::IC_FunctionParameterContext* CypherParser::iC_FunctionParameter() exitRule(); }); try { - setState(2880); + setState(2909); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 484, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 488, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2876); + setState(2905); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 483, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 487, _ctx)) { case 1: { - setState(2867); + setState(2896); oC_SymbolicName(); - setState(2869); + setState(2898); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2868); + setState(2897); match(CypherParser::SP); } - setState(2871); + setState(2900); match(CypherParser::COLON); - setState(2872); + setState(2901); match(CypherParser::T__5); - setState(2874); + setState(2903); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2873); + setState(2902); match(CypherParser::SP); } break; @@ -18222,14 +18410,14 @@ CypherParser::IC_FunctionParameterContext* CypherParser::iC_FunctionParameter() default: break; } - setState(2878); + setState(2907); oC_Expression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2879); + setState(2908); iC_LambdaParameter(); break; } @@ -18282,7 +18470,7 @@ size_t CypherParser::IC_LambdaParameterContext::getRuleIndex() const { CypherParser::IC_LambdaParameterContext* CypherParser::iC_LambdaParameter() { IC_LambdaParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 332, CypherParser::RuleIC_LambdaParameter); + enterRule(_localctx, 336, CypherParser::RuleIC_LambdaParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -18294,36 +18482,36 @@ CypherParser::IC_LambdaParameterContext* CypherParser::iC_LambdaParameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2882); + setState(2911); iC_LambdaVars(); - setState(2884); + setState(2913); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2883); + setState(2912); match(CypherParser::SP); } - setState(2886); + setState(2915); match(CypherParser::MINUS); - setState(2887); + setState(2916); match(CypherParser::T__14); - setState(2889); + setState(2918); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2888); + setState(2917); match(CypherParser::SP); } - setState(2891); + setState(2920); oC_Expression(); - setState(2893); + setState(2922); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 487, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 491, _ctx)) { case 1: { - setState(2892); + setState(2921); match(CypherParser::SP); break; } @@ -18372,7 +18560,7 @@ size_t CypherParser::IC_LambdaVarsContext::getRuleIndex() const { CypherParser::IC_LambdaVarsContext* CypherParser::iC_LambdaVars() { IC_LambdaVarsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 334, CypherParser::RuleIC_LambdaVars); + enterRule(_localctx, 338, CypherParser::RuleIC_LambdaVars); size_t _la = 0; #if __cplusplus > 201703L @@ -18383,7 +18571,7 @@ CypherParser::IC_LambdaVarsContext* CypherParser::iC_LambdaVars() { exitRule(); }); try { - setState(2919); + setState(2948); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -18452,62 +18640,62 @@ CypherParser::IC_LambdaVarsContext* CypherParser::iC_LambdaVars() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2895); + setState(2924); oC_SymbolicName(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(2896); + setState(2925); match(CypherParser::T__1); - setState(2898); + setState(2927); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2897); + setState(2926); match(CypherParser::SP); } - setState(2900); + setState(2929); oC_SymbolicName(); - setState(2902); + setState(2931); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2901); + setState(2930); match(CypherParser::SP); } - setState(2914); + setState(2943); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2904); + setState(2933); match(CypherParser::T__3); - setState(2906); + setState(2935); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2905); + setState(2934); match(CypherParser::SP); } - setState(2908); + setState(2937); oC_SymbolicName(); - setState(2910); + setState(2939); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2909); + setState(2938); match(CypherParser::SP); } - setState(2916); + setState(2945); _errHandler->sync(this); _la = _input->LA(1); } - setState(2917); + setState(2946); match(CypherParser::T__2); break; } @@ -18560,7 +18748,7 @@ size_t CypherParser::OC_PathPatternsContext::getRuleIndex() const { CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { OC_PathPatternsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 336, CypherParser::RuleOC_PathPatterns); + enterRule(_localctx, 340, CypherParser::RuleOC_PathPatterns); size_t _la = 0; #if __cplusplus > 201703L @@ -18573,23 +18761,23 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2921); + setState(2950); oC_NodePattern(); - setState(2926); + setState(2955); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2923); + setState(2952); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2922); + setState(2951); match(CypherParser::SP); } - setState(2925); + setState(2954); oC_PatternElementChain(); break; } @@ -18597,9 +18785,9 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { default: throw NoViableAltException(this); } - setState(2928); + setState(2957); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 495, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 499, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); } @@ -18658,7 +18846,7 @@ size_t CypherParser::OC_ExistCountSubqueryContext::getRuleIndex() const { CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery() { OC_ExistCountSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 338, CypherParser::RuleOC_ExistCountSubquery); + enterRule(_localctx, 342, CypherParser::RuleOC_ExistCountSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -18670,7 +18858,7 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( }); try { enterOuterAlt(_localctx, 1); - setState(2930); + setState(2959); _la = _input->LA(1); if (!(_la == CypherParser::COUNT @@ -18681,50 +18869,50 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( _errHandler->reportMatch(this); consume(); } - setState(2932); + setState(2961); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2931); + setState(2960); match(CypherParser::SP); } - setState(2934); + setState(2963); match(CypherParser::T__8); - setState(2936); + setState(2965); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2935); + setState(2964); match(CypherParser::SP); } - setState(2938); + setState(2967); match(CypherParser::MATCH); - setState(2940); + setState(2969); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2939); + setState(2968); match(CypherParser::SP); } - setState(2942); + setState(2971); oC_Pattern(); - setState(2947); + setState(2976); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 500, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 504, _ctx)) { case 1: { - setState(2944); + setState(2973); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2943); + setState(2972); match(CypherParser::SP); } - setState(2946); + setState(2975); oC_Where(); break; } @@ -18732,20 +18920,20 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( default: break; } - setState(2953); + setState(2982); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 502, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 506, _ctx)) { case 1: { - setState(2950); + setState(2979); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2949); + setState(2978); match(CypherParser::SP); } - setState(2952); + setState(2981); iC_Hint(); break; } @@ -18753,15 +18941,15 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( default: break; } - setState(2956); + setState(2985); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2955); + setState(2984); match(CypherParser::SP); } - setState(2958); + setState(2987); match(CypherParser::T__9); } @@ -18800,7 +18988,7 @@ size_t CypherParser::OC_PropertyLookupContext::getRuleIndex() const { CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { OC_PropertyLookupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 340, CypherParser::RuleOC_PropertyLookup); + enterRule(_localctx, 344, CypherParser::RuleOC_PropertyLookup); size_t _la = 0; #if __cplusplus > 201703L @@ -18812,17 +19000,17 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { }); try { enterOuterAlt(_localctx, 1); - setState(2960); + setState(2989); match(CypherParser::T__4); - setState(2962); + setState(2991); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2961); + setState(2990); match(CypherParser::SP); } - setState(2966); + setState(2995); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -18890,13 +19078,13 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2964); + setState(2993); oC_PropertyKeyName(); break; } case CypherParser::STAR: { - setState(2965); + setState(2994); match(CypherParser::STAR); break; } @@ -18965,7 +19153,7 @@ size_t CypherParser::OC_CaseExpressionContext::getRuleIndex() const { CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { OC_CaseExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 342, CypherParser::RuleOC_CaseExpression); + enterRule(_localctx, 346, CypherParser::RuleOC_CaseExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -18978,27 +19166,27 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2990); + setState(3019); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 511, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 515, _ctx)) { case 1: { - setState(2968); + setState(2997); match(CypherParser::CASE); - setState(2973); + setState(3002); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2970); + setState(2999); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2969); + setState(2998); match(CypherParser::SP); } - setState(2972); + setState(3001); oC_CaseAlternative(); break; } @@ -19006,41 +19194,41 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2975); + setState(3004); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 507, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 511, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } case 2: { - setState(2977); + setState(3006); match(CypherParser::CASE); - setState(2979); + setState(3008); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2978); + setState(3007); match(CypherParser::SP); } - setState(2981); + setState(3010); oC_Expression(); - setState(2986); + setState(3015); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2983); + setState(3012); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2982); + setState(3011); match(CypherParser::SP); } - setState(2985); + setState(3014); oC_CaseAlternative(); break; } @@ -19048,9 +19236,9 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2988); + setState(3017); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 510, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 514, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } @@ -19058,30 +19246,30 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(3000); + setState(3029); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 514, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 518, _ctx)) { case 1: { - setState(2993); + setState(3022); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2992); + setState(3021); match(CypherParser::SP); } - setState(2995); + setState(3024); match(CypherParser::ELSE); - setState(2997); + setState(3026); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2996); + setState(3025); match(CypherParser::SP); } - setState(2999); + setState(3028); oC_Expression(); break; } @@ -19089,15 +19277,15 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(3003); + setState(3032); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(3002); + setState(3031); match(CypherParser::SP); } - setState(3005); + setState(3034); match(CypherParser::END); } @@ -19148,7 +19336,7 @@ size_t CypherParser::OC_CaseAlternativeContext::getRuleIndex() const { CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { OC_CaseAlternativeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 344, CypherParser::RuleOC_CaseAlternative); + enterRule(_localctx, 348, CypherParser::RuleOC_CaseAlternative); size_t _la = 0; #if __cplusplus > 201703L @@ -19160,37 +19348,37 @@ CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { }); try { enterOuterAlt(_localctx, 1); - setState(3007); + setState(3036); match(CypherParser::WHEN); - setState(3009); + setState(3038); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(3008); + setState(3037); match(CypherParser::SP); } - setState(3011); + setState(3040); oC_Expression(); - setState(3013); + setState(3042); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(3012); + setState(3041); match(CypherParser::SP); } - setState(3015); + setState(3044); match(CypherParser::THEN); - setState(3017); + setState(3046); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(3016); + setState(3045); match(CypherParser::SP); } - setState(3019); + setState(3048); oC_Expression(); } @@ -19221,7 +19409,7 @@ size_t CypherParser::OC_VariableContext::getRuleIndex() const { CypherParser::OC_VariableContext* CypherParser::oC_Variable() { OC_VariableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 346, CypherParser::RuleOC_Variable); + enterRule(_localctx, 350, CypherParser::RuleOC_Variable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19232,7 +19420,7 @@ CypherParser::OC_VariableContext* CypherParser::oC_Variable() { }); try { enterOuterAlt(_localctx, 1); - setState(3021); + setState(3050); oC_SymbolicName(); } @@ -19267,7 +19455,7 @@ size_t CypherParser::OC_NumberLiteralContext::getRuleIndex() const { CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { OC_NumberLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 348, CypherParser::RuleOC_NumberLiteral); + enterRule(_localctx, 352, CypherParser::RuleOC_NumberLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19277,20 +19465,20 @@ CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { exitRule(); }); try { - setState(3025); + setState(3054); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ExponentDecimalReal: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(3023); + setState(3052); oC_DoubleLiteral(); break; } case CypherParser::DecimalInteger: { enterOuterAlt(_localctx, 2); - setState(3024); + setState(3053); oC_IntegerLiteral(); break; } @@ -19331,7 +19519,7 @@ size_t CypherParser::OC_ParameterContext::getRuleIndex() const { CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { OC_ParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 350, CypherParser::RuleOC_Parameter); + enterRule(_localctx, 354, CypherParser::RuleOC_Parameter); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19342,9 +19530,9 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { }); try { enterOuterAlt(_localctx, 1); - setState(3027); + setState(3056); match(CypherParser::T__24); - setState(3030); + setState(3059); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -19412,13 +19600,13 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(3028); + setState(3057); oC_SymbolicName(); break; } case CypherParser::DecimalInteger: { - setState(3029); + setState(3058); match(CypherParser::DecimalInteger); break; } @@ -19463,7 +19651,7 @@ size_t CypherParser::OC_PropertyExpressionContext::getRuleIndex() const { CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression() { OC_PropertyExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 352, CypherParser::RuleOC_PropertyExpression); + enterRule(_localctx, 356, CypherParser::RuleOC_PropertyExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -19475,17 +19663,17 @@ CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression( }); try { enterOuterAlt(_localctx, 1); - setState(3032); + setState(3061); oC_Atom(); - setState(3034); + setState(3063); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(3033); + setState(3062); match(CypherParser::SP); } - setState(3036); + setState(3065); oC_PropertyLookup(); } @@ -19516,7 +19704,7 @@ size_t CypherParser::OC_PropertyKeyNameContext::getRuleIndex() const { CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { OC_PropertyKeyNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 354, CypherParser::RuleOC_PropertyKeyName); + enterRule(_localctx, 358, CypherParser::RuleOC_PropertyKeyName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19527,7 +19715,7 @@ CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { }); try { enterOuterAlt(_localctx, 1); - setState(3038); + setState(3067); oC_SymbolicName(); } @@ -19558,7 +19746,7 @@ size_t CypherParser::OC_IntegerLiteralContext::getRuleIndex() const { CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { OC_IntegerLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 356, CypherParser::RuleOC_IntegerLiteral); + enterRule(_localctx, 360, CypherParser::RuleOC_IntegerLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19569,7 +19757,7 @@ CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(3040); + setState(3069); match(CypherParser::DecimalInteger); } @@ -19604,7 +19792,7 @@ size_t CypherParser::OC_DoubleLiteralContext::getRuleIndex() const { CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { OC_DoubleLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 358, CypherParser::RuleOC_DoubleLiteral); + enterRule(_localctx, 362, CypherParser::RuleOC_DoubleLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -19616,7 +19804,7 @@ CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(3042); + setState(3071); _la = _input->LA(1); if (!(_la == CypherParser::ExponentDecimalReal @@ -19660,7 +19848,7 @@ size_t CypherParser::OC_SchemaNameContext::getRuleIndex() const { CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { OC_SchemaNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 360, CypherParser::RuleOC_SchemaName); + enterRule(_localctx, 364, CypherParser::RuleOC_SchemaName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19671,16 +19859,16 @@ CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { }); try { enterOuterAlt(_localctx, 1); - setState(3044); + setState(3073); oC_SymbolicName(); - setState(3047); + setState(3076); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 522, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 526, _ctx)) { case 1: { - setState(3045); + setState(3074); match(CypherParser::T__4); - setState(3046); + setState(3075); oC_SymbolicName(); break; } @@ -19729,7 +19917,7 @@ size_t CypherParser::OC_SymbolicNameContext::getRuleIndex() const { CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { OC_SymbolicNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 362, CypherParser::RuleOC_SymbolicName); + enterRule(_localctx, 366, CypherParser::RuleOC_SymbolicName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19739,19 +19927,19 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { exitRule(); }); try { - setState(3054); + setState(3083); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::UnescapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(3049); + setState(3078); match(CypherParser::UnescapedSymbolicName); break; } case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(3050); + setState(3079); antlrcpp::downCast(_localctx)->escapedsymbolicnameToken = match(CypherParser::EscapedSymbolicName); if ((antlrcpp::downCast(_localctx)->escapedsymbolicnameToken != nullptr ? antlrcpp::downCast(_localctx)->escapedsymbolicnameToken->getText() : "") == "``") { notifyEmptyToken(antlrcpp::downCast(_localctx)->escapedsymbolicnameToken); } break; @@ -19759,7 +19947,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::HexLetter: { enterOuterAlt(_localctx, 3); - setState(3052); + setState(3081); match(CypherParser::HexLetter); break; } @@ -19827,7 +20015,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::DECIMAL: case CypherParser::L_SKIP: { enterOuterAlt(_localctx, 4); - setState(3053); + setState(3082); iC_NonReservedKeywords(); break; } @@ -20108,7 +20296,7 @@ size_t CypherParser::IC_NonReservedKeywordsContext::getRuleIndex() const { CypherParser::IC_NonReservedKeywordsContext* CypherParser::iC_NonReservedKeywords() { IC_NonReservedKeywordsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 364, CypherParser::RuleIC_NonReservedKeywords); + enterRule(_localctx, 368, CypherParser::RuleIC_NonReservedKeywords); size_t _la = 0; #if __cplusplus > 201703L @@ -20120,7 +20308,7 @@ CypherParser::IC_NonReservedKeywordsContext* CypherParser::iC_NonReservedKeyword }); try { enterOuterAlt(_localctx, 1); - setState(3056); + setState(3085); _la = _input->LA(1); if (!(((((_la - 47) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 47)) & -1201032351101114475) != 0) || ((((_la - 111) & ~ 0x3fULL) == 0) && @@ -20156,7 +20344,7 @@ size_t CypherParser::OC_LeftArrowHeadContext::getRuleIndex() const { CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { OC_LeftArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 366, CypherParser::RuleOC_LeftArrowHead); + enterRule(_localctx, 370, CypherParser::RuleOC_LeftArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -20168,7 +20356,7 @@ CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(3058); + setState(3087); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 1006641152) != 0))) { @@ -20203,7 +20391,7 @@ size_t CypherParser::OC_RightArrowHeadContext::getRuleIndex() const { CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { OC_RightArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 368, CypherParser::RuleOC_RightArrowHead); + enterRule(_localctx, 372, CypherParser::RuleOC_RightArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -20215,7 +20403,7 @@ CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(3060); + setState(3089); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 16106160128) != 0))) { @@ -20254,7 +20442,7 @@ size_t CypherParser::OC_DashContext::getRuleIndex() const { CypherParser::OC_DashContext* CypherParser::oC_Dash() { OC_DashContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 370, CypherParser::RuleOC_Dash); + enterRule(_localctx, 374, CypherParser::RuleOC_Dash); size_t _la = 0; #if __cplusplus > 201703L @@ -20266,7 +20454,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { }); try { enterOuterAlt(_localctx, 1); - setState(3062); + setState(3091); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 35167192219648) != 0) || _la == CypherParser::MINUS)) { @@ -20289,8 +20477,8 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { bool CypherParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { - case 64: return iC_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); - case 91: return iC_JoinNodeSempred(antlrcpp::downCast(context), predicateIndex); + case 66: return iC_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); + case 93: return iC_JoinNodeSempred(antlrcpp::downCast(context), predicateIndex); default: break; diff --git a/third_party/antlr4_cypher/include/cypher_parser.h b/third_party/antlr4_cypher/include/cypher_parser.h index 184c4737e0..be2b2cd606 100644 --- a/third_party/antlr4_cypher/include/cypher_parser.h +++ b/third_party/antlr4_cypher/include/cypher_parser.h @@ -60,60 +60,61 @@ class CypherParser : public antlr4::Parser { RuleIC_FilePaths = 22, RuleIC_IfNotExists = 23, RuleIC_CreateNodeTable = 24, RuleIC_CreateRelTable = 25, RuleIC_CreateIndex = 26, RuleIC_IndexPattern = 27, RuleIC_IndexNodePattern = 28, RuleIC_IndexRelationshipPattern = 29, - RuleIC_IndexPropertyPattern = 30, RuleIC_FromToConnections = 31, RuleIC_FromToConnection = 32, - RuleIC_CreateSequence = 33, RuleIC_CreateType = 34, RuleIC_SequenceOptions = 35, - RuleIC_WithPasswd = 36, RuleIC_CreateUser = 37, RuleIC_CreateRole = 38, - RuleIC_IncrementBy = 39, RuleIC_MinValue = 40, RuleIC_MaxValue = 41, - RuleIC_StartWith = 42, RuleIC_Cycle = 43, RuleIC_IfExists = 44, RuleIC_Drop = 45, - RuleIC_AlterTable = 46, RuleIC_AlterOptions = 47, RuleIC_AddProperty = 48, - RuleIC_Default = 49, RuleIC_DropProperty = 50, RuleIC_RenameTable = 51, - RuleIC_RenameProperty = 52, RuleIC_AddFromToConnection = 53, RuleIC_DropFromToConnection = 54, - RuleIC_ColumnDefinitions = 55, RuleIC_ColumnDefinition = 56, RuleIC_PropertyDefinitions = 57, - RuleIC_PropertyDefinition = 58, RuleIC_CreateNodeConstraint = 59, RuleIC_UnionType = 60, - RuleIC_StructType = 61, RuleIC_MapType = 62, RuleIC_DecimalType = 63, - RuleIC_DataType = 64, RuleIC_ListIdentifiers = 65, RuleIC_ListIdentifier = 66, - RuleOC_AnyCypherOption = 67, RuleOC_Explain = 68, RuleOC_Profile = 69, - RuleIC_Transaction = 70, RuleIC_Extension = 71, RuleIC_LoadExtension = 72, - RuleIC_InstallExtension = 73, RuleIC_UninstallExtension = 74, RuleIC_UpdateExtension = 75, - RuleOC_Query = 76, RuleOC_RegularQuery = 77, RuleOC_Union = 78, RuleOC_SingleQuery = 79, - RuleOC_SinglePartQuery = 80, RuleOC_MultiPartQuery = 81, RuleIC_QueryPart = 82, - RuleOC_UpdatingClause = 83, RuleOC_ReadingClause = 84, RuleIC_LoadFrom = 85, - RuleOC_YieldItem = 86, RuleOC_YieldItems = 87, RuleIC_InQueryCall = 88, - RuleOC_Match = 89, RuleIC_Hint = 90, RuleIC_JoinNode = 91, RuleOC_Unwind = 92, - RuleOC_Create = 93, RuleOC_Merge = 94, RuleOC_MergeAction = 95, RuleOC_Set = 96, - RuleOC_SetItem = 97, RuleOC_Delete = 98, RuleOC_With = 99, RuleOC_Return = 100, - RuleOC_ProjectionBody = 101, RuleOC_ProjectionItems = 102, RuleOC_ProjectionItem = 103, - RuleOC_Order = 104, RuleOC_Skip = 105, RuleOC_Limit = 106, RuleOC_SortItem = 107, - RuleOC_Where = 108, RuleOC_Pattern = 109, RuleOC_PatternPart = 110, - RuleOC_AnonymousPatternPart = 111, RuleOC_PatternElement = 112, RuleOC_NodePattern = 113, - RuleOC_PatternElementChain = 114, RuleOC_RelationshipPattern = 115, - RuleOC_RelationshipDetail = 116, RuleIC_Properties = 117, RuleOC_RelationshipTypes = 118, - RuleOC_NodeLabels = 119, RuleIC_RecursiveDetail = 120, RuleIC_RecursiveType = 121, - RuleOC_RangeLiteral = 122, RuleIC_RecursiveComprehension = 123, RuleIC_RecursiveProjectionItems = 124, - RuleOC_LowerBound = 125, RuleOC_UpperBound = 126, RuleOC_LabelName = 127, - RuleOC_RelTypeName = 128, RuleOC_Expression = 129, RuleOC_OrExpression = 130, - RuleOC_XorExpression = 131, RuleOC_AndExpression = 132, RuleOC_NotExpression = 133, - RuleOC_ComparisonExpression = 134, RuleIC_ComparisonOperator = 135, - RuleIC_BitwiseOrOperatorExpression = 136, RuleIC_BitwiseAndOperatorExpression = 137, - RuleIC_BitShiftOperatorExpression = 138, RuleIC_BitShiftOperator = 139, - RuleOC_AddOrSubtractExpression = 140, RuleIC_AddOrSubtractOperator = 141, - RuleOC_MultiplyDivideModuloExpression = 142, RuleIC_MultiplyDivideModuloOperator = 143, - RuleOC_PowerOfExpression = 144, RuleOC_StringListNullOperatorExpression = 145, - RuleOC_ListOperatorExpression = 146, RuleOC_StringOperatorExpression = 147, - RuleOC_RegularExpression = 148, RuleOC_NullOperatorExpression = 149, - RuleOC_UnaryAddSubtractOrFactorialExpression = 150, RuleOC_PropertyOrLabelsExpression = 151, - RuleOC_Atom = 152, RuleOC_Quantifier = 153, RuleOC_FilterExpression = 154, - RuleOC_IdInColl = 155, RuleOC_Literal = 156, RuleOC_BooleanLiteral = 157, - RuleOC_ListLiteral = 158, RuleIC_ListEntry = 159, RuleIC_StructLiteral = 160, - RuleIC_StructField = 161, RuleOC_ParenthesizedExpression = 162, RuleOC_FunctionInvocation = 163, - RuleOC_FunctionName = 164, RuleIC_FunctionParameter = 165, RuleIC_LambdaParameter = 166, - RuleIC_LambdaVars = 167, RuleOC_PathPatterns = 168, RuleOC_ExistCountSubquery = 169, - RuleOC_PropertyLookup = 170, RuleOC_CaseExpression = 171, RuleOC_CaseAlternative = 172, - RuleOC_Variable = 173, RuleOC_NumberLiteral = 174, RuleOC_Parameter = 175, - RuleOC_PropertyExpression = 176, RuleOC_PropertyKeyName = 177, RuleOC_IntegerLiteral = 178, - RuleOC_DoubleLiteral = 179, RuleOC_SchemaName = 180, RuleOC_SymbolicName = 181, - RuleIC_NonReservedKeywords = 182, RuleOC_LeftArrowHead = 183, RuleOC_RightArrowHead = 184, - RuleOC_Dash = 185 + RuleIC_IndexPropertyPattern = 30, RuleIC_CreateFromToConnections = 31, + RuleIC_CreateFromToConnection = 32, RuleIC_FromToConnections = 33, RuleIC_FromToConnection = 34, + RuleIC_CreateSequence = 35, RuleIC_CreateType = 36, RuleIC_SequenceOptions = 37, + RuleIC_WithPasswd = 38, RuleIC_CreateUser = 39, RuleIC_CreateRole = 40, + RuleIC_IncrementBy = 41, RuleIC_MinValue = 42, RuleIC_MaxValue = 43, + RuleIC_StartWith = 44, RuleIC_Cycle = 45, RuleIC_IfExists = 46, RuleIC_Drop = 47, + RuleIC_AlterTable = 48, RuleIC_AlterOptions = 49, RuleIC_AddProperty = 50, + RuleIC_Default = 51, RuleIC_DropProperty = 52, RuleIC_RenameTable = 53, + RuleIC_RenameProperty = 54, RuleIC_AddFromToConnection = 55, RuleIC_DropFromToConnection = 56, + RuleIC_ColumnDefinitions = 57, RuleIC_ColumnDefinition = 58, RuleIC_PropertyDefinitions = 59, + RuleIC_PropertyDefinition = 60, RuleIC_CreateNodeConstraint = 61, RuleIC_UnionType = 62, + RuleIC_StructType = 63, RuleIC_MapType = 64, RuleIC_DecimalType = 65, + RuleIC_DataType = 66, RuleIC_ListIdentifiers = 67, RuleIC_ListIdentifier = 68, + RuleOC_AnyCypherOption = 69, RuleOC_Explain = 70, RuleOC_Profile = 71, + RuleIC_Transaction = 72, RuleIC_Extension = 73, RuleIC_LoadExtension = 74, + RuleIC_InstallExtension = 75, RuleIC_UninstallExtension = 76, RuleIC_UpdateExtension = 77, + RuleOC_Query = 78, RuleOC_RegularQuery = 79, RuleOC_Union = 80, RuleOC_SingleQuery = 81, + RuleOC_SinglePartQuery = 82, RuleOC_MultiPartQuery = 83, RuleIC_QueryPart = 84, + RuleOC_UpdatingClause = 85, RuleOC_ReadingClause = 86, RuleIC_LoadFrom = 87, + RuleOC_YieldItem = 88, RuleOC_YieldItems = 89, RuleIC_InQueryCall = 90, + RuleOC_Match = 91, RuleIC_Hint = 92, RuleIC_JoinNode = 93, RuleOC_Unwind = 94, + RuleOC_Create = 95, RuleOC_Merge = 96, RuleOC_MergeAction = 97, RuleOC_Set = 98, + RuleOC_SetItem = 99, RuleOC_Delete = 100, RuleOC_With = 101, RuleOC_Return = 102, + RuleOC_ProjectionBody = 103, RuleOC_ProjectionItems = 104, RuleOC_ProjectionItem = 105, + RuleOC_Order = 106, RuleOC_Skip = 107, RuleOC_Limit = 108, RuleOC_SortItem = 109, + RuleOC_Where = 110, RuleOC_Pattern = 111, RuleOC_PatternPart = 112, + RuleOC_AnonymousPatternPart = 113, RuleOC_PatternElement = 114, RuleOC_NodePattern = 115, + RuleOC_PatternElementChain = 116, RuleOC_RelationshipPattern = 117, + RuleOC_RelationshipDetail = 118, RuleIC_Properties = 119, RuleOC_RelationshipTypes = 120, + RuleOC_NodeLabels = 121, RuleIC_RecursiveDetail = 122, RuleIC_RecursiveType = 123, + RuleOC_RangeLiteral = 124, RuleIC_RecursiveComprehension = 125, RuleIC_RecursiveProjectionItems = 126, + RuleOC_LowerBound = 127, RuleOC_UpperBound = 128, RuleOC_LabelName = 129, + RuleOC_RelTypeName = 130, RuleOC_Expression = 131, RuleOC_OrExpression = 132, + RuleOC_XorExpression = 133, RuleOC_AndExpression = 134, RuleOC_NotExpression = 135, + RuleOC_ComparisonExpression = 136, RuleIC_ComparisonOperator = 137, + RuleIC_BitwiseOrOperatorExpression = 138, RuleIC_BitwiseAndOperatorExpression = 139, + RuleIC_BitShiftOperatorExpression = 140, RuleIC_BitShiftOperator = 141, + RuleOC_AddOrSubtractExpression = 142, RuleIC_AddOrSubtractOperator = 143, + RuleOC_MultiplyDivideModuloExpression = 144, RuleIC_MultiplyDivideModuloOperator = 145, + RuleOC_PowerOfExpression = 146, RuleOC_StringListNullOperatorExpression = 147, + RuleOC_ListOperatorExpression = 148, RuleOC_StringOperatorExpression = 149, + RuleOC_RegularExpression = 150, RuleOC_NullOperatorExpression = 151, + RuleOC_UnaryAddSubtractOrFactorialExpression = 152, RuleOC_PropertyOrLabelsExpression = 153, + RuleOC_Atom = 154, RuleOC_Quantifier = 155, RuleOC_FilterExpression = 156, + RuleOC_IdInColl = 157, RuleOC_Literal = 158, RuleOC_BooleanLiteral = 159, + RuleOC_ListLiteral = 160, RuleIC_ListEntry = 161, RuleIC_StructLiteral = 162, + RuleIC_StructField = 163, RuleOC_ParenthesizedExpression = 164, RuleOC_FunctionInvocation = 165, + RuleOC_FunctionName = 166, RuleIC_FunctionParameter = 167, RuleIC_LambdaParameter = 168, + RuleIC_LambdaVars = 169, RuleOC_PathPatterns = 170, RuleOC_ExistCountSubquery = 171, + RuleOC_PropertyLookup = 172, RuleOC_CaseExpression = 173, RuleOC_CaseAlternative = 174, + RuleOC_Variable = 175, RuleOC_NumberLiteral = 176, RuleOC_Parameter = 177, + RuleOC_PropertyExpression = 178, RuleOC_PropertyKeyName = 179, RuleOC_IntegerLiteral = 180, + RuleOC_DoubleLiteral = 181, RuleOC_SchemaName = 182, RuleOC_SymbolicName = 183, + RuleIC_NonReservedKeywords = 184, RuleOC_LeftArrowHead = 185, RuleOC_RightArrowHead = 186, + RuleOC_Dash = 187 }; explicit CypherParser(antlr4::TokenStream *input); @@ -164,6 +165,8 @@ class CypherParser : public antlr4::Parser { class IC_IndexNodePatternContext; class IC_IndexRelationshipPatternContext; class IC_IndexPropertyPatternContext; + class IC_CreateFromToConnectionsContext; + class IC_CreateFromToConnectionContext; class IC_FromToConnectionsContext; class IC_FromToConnectionContext; class IC_CreateSequenceContext; @@ -751,7 +754,7 @@ class CypherParser : public antlr4::Parser { antlr4::tree::TerminalNode *REL(); antlr4::tree::TerminalNode *TABLE(); OC_SchemaNameContext *oC_SchemaName(); - IC_FromToConnectionsContext *iC_FromToConnections(); + IC_CreateFromToConnectionsContext *iC_CreateFromToConnections(); antlr4::tree::TerminalNode *AS(); OC_QueryContext *oC_Query(); antlr4::tree::TerminalNode *GROUP(); @@ -843,6 +846,37 @@ class CypherParser : public antlr4::Parser { IC_IndexPropertyPatternContext* iC_IndexPropertyPattern(); + class IC_CreateFromToConnectionsContext : public antlr4::ParserRuleContext { + public: + IC_CreateFromToConnectionsContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector iC_CreateFromToConnection(); + IC_CreateFromToConnectionContext* iC_CreateFromToConnection(size_t i); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + + + }; + + IC_CreateFromToConnectionsContext* iC_CreateFromToConnections(); + + class IC_CreateFromToConnectionContext : public antlr4::ParserRuleContext { + public: + IC_CreateFromToConnectionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *FROM(); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + std::vector oC_SchemaName(); + OC_SchemaNameContext* oC_SchemaName(size_t i); + antlr4::tree::TerminalNode *TO(); + OC_SymbolicNameContext *oC_SymbolicName(); + + + }; + + IC_CreateFromToConnectionContext* iC_CreateFromToConnection(); + class IC_FromToConnectionsContext : public antlr4::ParserRuleContext { public: IC_FromToConnectionsContext(antlr4::ParserRuleContext *parent, size_t invokingState);