From 04080432adce2f3425c4d1c8731662943d3ab4a8 Mon Sep 17 00:00:00 2001
From: CREAsTIVE <62616308+CREAsTIVE@users.noreply.github.com>
Date: Mon, 15 Sep 2025 20:42:31 +0500
Subject: [PATCH] refactor: .gitignore update + submodule version + remove
trash files
---
.gitignore | 74 +-
.gitmodules | 7 +-
Plugins/SungearEngineEditor/.idea/.gitignore | 8 -
.../.idea/SungearEngineEditor.iml | 2 -
Plugins/SungearEngineEditor/.idea/editor.xml | 578 -
Plugins/SungearEngineEditor/.idea/misc.xml | 12 -
Plugins/SungearEngineEditor/.idea/modules.xml | 8 -
Plugins/SungearEngineEditor/.idea/vcs.xml | 10 -
.../UI/ANTLR4CSS3Generated/css3Lexer.cpp | 686 -
.../SGCore/UI/ANTLR4CSS3Generated/css3Lexer.h | 65 -
.../UI/ANTLR4CSS3Generated/css3Lexer.interp | 265 -
.../UI/ANTLR4CSS3Generated/css3Lexer.tokens | 98 -
.../UI/ANTLR4CSS3Generated/css3Parser.cpp | 10920 ----------------
.../UI/ANTLR4CSS3Generated/css3Parser.h | 2096 ---
.../UI/ANTLR4CSS3Generated/css3Parser.interp | 227 -
.../UI/ANTLR4CSS3Generated/css3Parser.tokens | 98 -
.../css3ParserBaseListener.cpp | 7 -
.../css3ParserBaseListener.h | 305 -
.../css3ParserBaseVisitor.cpp | 7 -
.../css3ParserBaseVisitor.h | 392 -
.../css3ParserListener.cpp | 7 -
.../ANTLR4CSS3Generated/css3ParserListener.h | 298 -
.../ANTLR4CSS3Generated/css3ParserVisitor.cpp | 7 -
.../ANTLR4CSS3Generated/css3ParserVisitor.h | 210 -
vcpkg | 2 +-
25 files changed, 21 insertions(+), 16368 deletions(-)
delete mode 100644 Plugins/SungearEngineEditor/.idea/.gitignore
delete mode 100644 Plugins/SungearEngineEditor/.idea/SungearEngineEditor.iml
delete mode 100644 Plugins/SungearEngineEditor/.idea/editor.xml
delete mode 100644 Plugins/SungearEngineEditor/.idea/misc.xml
delete mode 100644 Plugins/SungearEngineEditor/.idea/modules.xml
delete mode 100644 Plugins/SungearEngineEditor/.idea/vcs.xml
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.cpp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.h
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.interp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.tokens
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.cpp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.h
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.interp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.tokens
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseListener.cpp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseListener.h
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseVisitor.cpp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseVisitor.h
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserListener.cpp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserListener.h
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserVisitor.cpp
delete mode 100644 Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserVisitor.h
diff --git a/.gitignore b/.gitignore
index 407fef495..589d5b8f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,68 +1,24 @@
-cmake-build-debug
-cmake-build-release
-release-test
-out
-.vs
-
# SOURCES ---------------
-Sources/cmake-build-debug
-Sources/SGCore/cmake-build-debug
-Sources/SGConsole/cmake-build-debug
-Sources/SGEntry/cmake-build-debug
-Tests/Physics/cmake-build-debug
-Tests/Physics/cmake-build-release
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.cpp
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.h
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.cpp
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.h
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseListener.cpp
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseListener.h
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseVisitor.cpp
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserBaseVisitor.h
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserListener.cpp
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserListener.h
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserVisitor.cpp
-Sources/SGCore/UI/ANTLR4CSS3Generated/css3ParserVisitor.h
+Sources/SGCore/UI/*Generated/
+.SG_GENERATED
# -----------------------
-# RESOURCES -------------
-SGResources/cmake-build-debug
-Resources/SGResources/models/test/sponza
-Resources/SGResources/models/test/sponza_new
-Resources/SGResources/models/test/trees
-Resources/SGResources/models/test/btr_80
-Resources/SGResources/models/test/stalker
-Resources/SGResources/models/test/ak74m
-Resources/SGResources/models/test/lenin
-Resources/SGResources/models/test/train_ep20
-
-Resources/SGResources/models/test/gaz-66.mtl
-Resources/SGResources/models/test/gaz-66.obj
-Resources/SGResources/models/test/plane.obj
-Resources/SGResources/models/test/T34.obj
-Resources/SGResources/models/test/T_34_85.obj
-Resources/SGResources/models/test/Tiger1.obj
+# BUILD ---------------
+**/cmake-build-debug/
+**/cmake-build-release/
+**/release-test/
+# ---------------------
+# RESOURCES -------------
Resources/SGResources/models/test
# -----------------------
-Games
-
-CMakeSettings.json
-
-build
-
-.vscode
+# EDITOR ---------------
+.vs
.idea
+.vscode
+# -----------------------
-ports
-
-SDK
-
-.SG_GENERATED
-
-Projects
-
-Models
-
-installed
+# CMAKE -----------------
+CMakeSettings.json
+# -----------------------
diff --git a/.gitmodules b/.gitmodules
index 3302c5674..1862f4776 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,8 +1,11 @@
[submodule "vcpkg"]
path = vcpkg
- url = https://github.com/microsoft/vcpkg
+ url = https://github.com/microsoft/vcpkg/tree/d5a87c6bcc5d3cb3f5627bfeff977280097c719c
[submodule "msdf-atlas-gen"]
path = Externals/msdf-atlas-gen
url = https://github.com/Chlumsky/msdf-atlas-gen
- branch = v1.3
\ No newline at end of file
+ branch = v1.3
+[submodule ".\\Externals\\msdf-atlas-gen\\"]
+ path = .\\Externals\\msdf-atlas-gen\\
+ url = https://github.com/Chlumsky/msdf-atlas-gen/tree/c27de5988d7ecfbc9936ee5f936429e2dbc077b9
diff --git a/Plugins/SungearEngineEditor/.idea/.gitignore b/Plugins/SungearEngineEditor/.idea/.gitignore
deleted file mode 100644
index 13566b81b..000000000
--- a/Plugins/SungearEngineEditor/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/Plugins/SungearEngineEditor/.idea/SungearEngineEditor.iml b/Plugins/SungearEngineEditor/.idea/SungearEngineEditor.iml
deleted file mode 100644
index f08604bb6..000000000
--- a/Plugins/SungearEngineEditor/.idea/SungearEngineEditor.iml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/Plugins/SungearEngineEditor/.idea/editor.xml b/Plugins/SungearEngineEditor/.idea/editor.xml
deleted file mode 100644
index a94e5a5af..000000000
--- a/Plugins/SungearEngineEditor/.idea/editor.xml
+++ /dev/null
@@ -1,578 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Plugins/SungearEngineEditor/.idea/misc.xml b/Plugins/SungearEngineEditor/.idea/misc.xml
deleted file mode 100644
index 6f52ba1e6..000000000
--- a/Plugins/SungearEngineEditor/.idea/misc.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Plugins/SungearEngineEditor/.idea/modules.xml b/Plugins/SungearEngineEditor/.idea/modules.xml
deleted file mode 100644
index 0a2fddb36..000000000
--- a/Plugins/SungearEngineEditor/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Plugins/SungearEngineEditor/.idea/vcs.xml b/Plugins/SungearEngineEditor/.idea/vcs.xml
deleted file mode 100644
index e2f14ea4d..000000000
--- a/Plugins/SungearEngineEditor/.idea/vcs.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.cpp b/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.cpp
deleted file mode 100644
index eb7235a2d..000000000
--- a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.cpp
+++ /dev/null
@@ -1,686 +0,0 @@
-
-// Generated from /home/creastive/projects/sungear/SungearEngine/Externals/antlr4/css/css3Lexer.g4 by ANTLR 4.13.1
-
-
-#include "css3Lexer.h"
-
-
-using namespace antlr4;
-
-
-
-using namespace antlr4;
-
-namespace {
-
-struct Css3LexerStaticData final {
- Css3LexerStaticData(std::vector ruleNames,
- std::vector channelNames,
- std::vector modeNames,
- std::vector literalNames,
- std::vector symbolicNames)
- : ruleNames(std::move(ruleNames)), channelNames(std::move(channelNames)),
- modeNames(std::move(modeNames)), literalNames(std::move(literalNames)),
- symbolicNames(std::move(symbolicNames)),
- vocabulary(this->literalNames, this->symbolicNames) {}
-
- Css3LexerStaticData(const Css3LexerStaticData&) = delete;
- Css3LexerStaticData(Css3LexerStaticData&&) = delete;
- Css3LexerStaticData& operator=(const Css3LexerStaticData&) = delete;
- Css3LexerStaticData& operator=(Css3LexerStaticData&&) = delete;
-
- std::vector decisionToDFA;
- antlr4::atn::PredictionContextCache sharedContextCache;
- const std::vector ruleNames;
- const std::vector channelNames;
- const std::vector modeNames;
- const std::vector literalNames;
- const std::vector symbolicNames;
- const antlr4::dfa::Vocabulary vocabulary;
- antlr4::atn::SerializedATNView serializedATN;
- std::unique_ptr atn;
-};
-
-::antlr4::internal::OnceFlag css3lexerLexerOnceFlag;
-#if ANTLR4_USE_THREAD_LOCAL_CACHE
-static thread_local
-#endif
-Css3LexerStaticData *css3lexerLexerStaticData = nullptr;
-
-void css3lexerLexerInitialize() {
-#if ANTLR4_USE_THREAD_LOCAL_CACHE
- if (css3lexerLexerStaticData != nullptr) {
- return;
- }
-#else
- assert(css3lexerLexerStaticData == nullptr);
-#endif
- auto staticData = std::make_unique(
- std::vector{
- "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace",
- "CloseBrace", "SemiColon", "Equal", "Colon", "Dot", "Multiply", "Divide",
- "Pipe", "Underscore", "At", "Hex", "NewlineOrSpace", "Unicode", "Escape",
- "Nmstart", "Nmchar", "Comment", "Name", "Url", "Space", "Whitespace",
- "Newline", "ZeroToFourZeros", "A", "B", "C", "D", "E", "F", "G", "H",
- "I", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W",
- "X", "Y", "Z", "DashChar", "Cdo", "Cdc", "Includes", "DashMatch",
- "Hash", "Import", "Page", "Media", "Namespace", "Charset", "Important",
- "FontRelative", "ViewportRelative", "AbsLength", "Angle", "Time",
- "Freq", "Percentage", "Url_", "UnicodeRange", "MediaOnly", "Not",
- "And", "Resolution", "Length", "Dimension", "UnknownDimension", "Nonascii",
- "Plus", "Minus", "Greater", "Comma", "Tilde", "PseudoNot", "Number",
- "String_", "PrefixMatch", "SuffixMatch", "SubstringMatch", "FontFace",
- "Supports", "Or", "VendorPrefix", "Keyframes", "From", "To", "Calc",
- "Rgb", "Rgba", "Viewport", "CounterStyle", "FontFeatureValues", "DxImageTransform",
- "AtKeyword", "Variable", "Var", "Ident", "Function_", "UnexpectedCharacter"
- },
- std::vector{
- "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
- },
- std::vector{
- "DEFAULT_MODE"
- },
- std::vector{
- "", "'['", "']'", "'('", "')'", "'{'", "'}'", "';'", "'='", "':'",
- "'.'", "'*'", "'/'", "'|'", "'_'", "", "", "", "''",
- "'~='", "'|='", "", "", "", "", "", "'@charset '", "", "", "'url('",
- "", "", "", "", "", "", "'+'", "'-'", "'>'", "','", "'~'", "", "",
- "", "'^='", "'$='", "'*='", "", "", "", "", "", "", "'calc('", "'rgb('",
- "'rgba('", "", "", "", "", "", "", "'var('"
- },
- std::vector{
- "", "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace",
- "CloseBrace", "SemiColon", "Equal", "Colon", "Dot", "Multiply", "Divide",
- "Pipe", "Underscore", "Comment", "Url", "Space", "Cdo", "Cdc", "Includes",
- "DashMatch", "Hash", "Import", "Page", "Media", "Namespace", "Charset",
- "Important", "Percentage", "Url_", "UnicodeRange", "MediaOnly", "Not",
- "And", "Dimension", "UnknownDimension", "Plus", "Minus", "Greater",
- "Comma", "Tilde", "PseudoNot", "Number", "String_", "PrefixMatch",
- "SuffixMatch", "SubstringMatch", "FontFace", "Supports", "Or", "Keyframes",
- "From", "To", "Calc", "Rgb", "Rgba", "Viewport", "CounterStyle", "FontFeatureValues",
- "DxImageTransform", "AtKeyword", "Variable", "Var", "Ident", "Function_",
- "UnexpectedCharacter"
- }
- );
- static const int32_t serializedATNSegment[] = {
- 4,0,66,1403,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,
- 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,
- 14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,
- 21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,
- 28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,
- 35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,
- 42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,
- 49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,
- 56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,
- 63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,
- 70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,
- 77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,
- 84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,
- 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,
- 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,
- 7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,
- 7,110,2,111,7,111,2,112,7,112,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,
- 1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,
- 1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,16,1,16,3,16,264,8,16,1,17,
- 1,17,1,17,3,17,269,8,17,1,17,3,17,272,8,17,1,17,3,17,275,8,17,1,17,3,
- 17,278,8,17,1,17,3,17,281,8,17,1,17,1,17,1,18,1,18,1,18,3,18,288,8,18,
- 1,19,1,19,1,19,3,19,293,8,19,1,20,1,20,1,20,3,20,298,8,20,1,21,1,21,1,
- 21,1,21,5,21,304,8,21,10,21,12,21,307,9,21,1,21,4,21,310,8,21,11,21,12,
- 21,311,1,21,1,21,5,21,316,8,21,10,21,12,21,319,9,21,1,21,4,21,322,8,21,
- 11,21,12,21,323,5,21,326,8,21,10,21,12,21,329,9,21,1,21,1,21,1,22,4,22,
- 334,8,22,11,22,12,22,335,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,5,23,
- 346,8,23,10,23,12,23,349,9,23,1,23,1,23,1,23,1,24,4,24,355,8,24,11,24,
- 12,24,356,1,25,1,25,3,25,361,8,25,1,26,1,26,1,26,1,26,3,26,367,8,26,1,
- 27,3,27,370,8,27,1,27,3,27,373,8,27,1,27,3,27,376,8,27,1,27,3,27,379,
- 8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,388,8,28,1,28,1,28,3,28,
- 392,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,401,8,29,1,29,1,29,3,
- 29,405,8,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,414,8,30,1,30,1,30,
- 3,30,418,8,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,427,8,31,1,31,1,
- 31,3,31,431,8,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,3,32,440,8,32,1,32,
- 1,32,3,32,444,8,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,453,8,33,1,
- 33,1,33,3,33,457,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,466,8,34,
- 1,34,1,34,1,34,1,34,1,34,1,34,3,34,474,8,34,1,35,1,35,1,35,1,35,1,35,
- 1,35,1,35,3,35,483,8,35,1,35,1,35,1,35,1,35,1,35,1,35,3,35,491,8,35,1,
- 36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,500,8,36,1,36,1,36,1,36,1,36,1,
- 36,1,36,3,36,508,8,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,517,8,37,
- 1,37,1,37,1,37,1,37,1,37,1,37,3,37,525,8,37,1,38,1,38,1,38,1,38,1,38,
- 1,38,1,38,3,38,534,8,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,542,8,38,1,
- 39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,551,8,39,1,39,1,39,1,39,1,39,1,
- 39,1,39,3,39,559,8,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,568,8,40,
- 1,40,1,40,1,40,1,40,1,40,1,40,3,40,576,8,40,1,41,1,41,1,41,1,41,1,41,
- 1,41,1,41,3,41,585,8,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,593,8,41,1,
- 42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,602,8,42,1,42,1,42,1,42,1,42,1,
- 42,1,42,3,42,610,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,3,43,619,8,43,
- 1,43,1,43,1,43,1,43,1,43,1,43,3,43,627,8,43,1,44,1,44,1,44,1,44,1,44,
- 1,44,1,44,3,44,636,8,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,644,8,44,1,
- 45,1,45,1,45,1,45,1,45,1,45,1,45,3,45,653,8,45,1,45,1,45,1,45,1,45,1,
- 45,1,45,3,45,661,8,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,670,8,46,
- 1,46,1,46,1,46,1,46,1,46,1,46,3,46,678,8,46,1,47,1,47,1,47,1,47,1,47,
- 1,47,1,47,3,47,687,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,695,8,47,1,
- 48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,704,8,48,1,48,1,48,1,48,1,48,1,
- 48,1,48,3,48,712,8,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,3,49,721,8,49,
- 1,49,1,49,1,49,1,49,1,49,1,49,3,49,729,8,49,1,50,1,50,1,50,1,50,1,50,
- 1,50,1,50,3,50,738,8,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,746,8,50,1,
- 51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,755,8,51,1,51,1,51,1,51,1,51,1,
- 51,1,51,3,51,763,8,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,772,8,52,
- 1,52,1,52,1,52,1,52,1,52,1,52,3,52,780,8,52,1,53,1,53,1,53,1,53,1,53,
- 1,53,1,53,1,53,3,53,790,8,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,
- 1,55,1,56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,59,1,59,1,59,1,59,
- 1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,
- 1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,
- 1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,5,64,
- 855,8,64,10,64,12,64,858,9,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,
- 1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,
- 1,65,1,65,1,65,1,65,1,65,3,65,887,8,65,1,66,1,66,1,66,1,66,1,66,1,66,
- 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,
- 3,66,909,8,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,
- 1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,
- 1,67,1,67,3,67,938,8,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,
- 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,
- 962,8,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,3,69,971,8,69,1,70,1,70,1,
- 70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,982,8,70,1,71,1,71,1,71,1,72,1,
- 72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,3,73,997,8,73,1,73,3,73,1000,
- 8,73,1,73,3,73,1003,8,73,1,73,3,73,1006,8,73,1,73,3,73,1009,8,73,1,73,
- 1,73,1,73,1,73,3,73,1015,8,73,1,73,3,73,1018,8,73,1,73,3,73,1021,8,73,
- 1,73,3,73,1024,8,73,1,73,3,73,1027,8,73,1,73,1,73,1,73,1,73,1,73,3,73,
- 1034,8,73,1,73,3,73,1037,8,73,1,73,3,73,1040,8,73,1,73,3,73,1043,8,73,
- 1,73,1,73,1,73,1,73,1,73,1,73,3,73,1051,8,73,1,73,3,73,1054,8,73,1,73,
- 3,73,1057,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,1066,8,73,1,73,
- 3,73,1069,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,1079,8,73,
- 3,73,1081,8,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,
- 1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,
- 1,77,1,77,1,77,1,77,1,77,3,77,1113,8,77,1,78,1,78,1,78,3,78,1118,8,78,
- 1,79,1,79,1,79,1,79,1,79,3,79,1125,8,79,1,80,1,80,1,80,1,81,1,81,1,82,
- 1,82,1,83,1,83,1,84,1,84,1,85,1,85,1,86,1,86,1,87,1,87,1,87,1,87,1,87,
- 1,87,1,88,4,88,1149,8,88,11,88,12,88,1150,1,88,5,88,1154,8,88,10,88,12,
- 88,1157,9,88,1,88,1,88,4,88,1161,8,88,11,88,12,88,1162,3,88,1165,8,88,
- 1,89,1,89,1,89,1,89,1,89,1,89,5,89,1173,8,89,10,89,12,89,1176,9,89,1,
- 89,1,89,1,89,1,89,1,89,1,89,1,89,5,89,1185,8,89,10,89,12,89,1188,9,89,
- 1,89,3,89,1191,8,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1,93,
- 1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,
- 1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,
- 1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,
- 3,96,1245,8,96,1,97,1,97,3,97,1249,8,97,1,97,1,97,1,97,1,97,1,97,1,97,
- 1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,100,1,100,
- 1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,
- 1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,
- 1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,
- 1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
- 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
- 1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
- 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
- 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
- 1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,5,108,1377,
- 8,108,10,108,12,108,1380,9,108,1,109,1,109,1,109,1,109,1,109,1,110,3,
- 110,1388,8,110,1,110,1,110,5,110,1392,8,110,10,110,12,110,1395,9,110,
- 1,111,1,111,1,111,1,112,1,112,1,112,1,112,0,0,113,1,1,3,2,5,3,7,4,9,5,
- 11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,0,31,0,33,0,35,0,
- 37,0,39,0,41,0,43,15,45,0,47,16,49,17,51,0,53,0,55,0,57,0,59,0,61,0,63,
- 0,65,0,67,0,69,0,71,0,73,0,75,0,77,0,79,0,81,0,83,0,85,0,87,0,89,0,91,
- 0,93,0,95,0,97,0,99,0,101,0,103,0,105,0,107,0,109,18,111,19,113,20,115,
- 21,117,22,119,23,121,24,123,25,125,26,127,27,129,28,131,0,133,0,135,0,
- 137,0,139,0,141,0,143,29,145,30,147,31,149,32,151,33,153,34,155,0,157,
- 0,159,35,161,36,163,0,165,37,167,38,169,39,171,40,173,41,175,42,177,43,
- 179,44,181,45,183,46,185,47,187,48,189,49,191,50,193,0,195,51,197,52,
- 199,53,201,54,203,55,205,56,207,57,209,58,211,59,213,60,215,61,217,62,
- 219,63,221,64,223,65,225,66,1,0,38,3,0,48,57,65,70,97,102,3,0,9,10,12,
- 13,32,32,5,0,10,10,12,13,48,57,65,70,97,102,3,0,65,90,95,95,97,122,5,
- 0,45,45,48,57,65,90,95,95,97,122,1,0,42,42,2,0,42,42,47,47,3,0,33,33,
- 35,38,42,126,2,0,65,65,97,97,2,0,66,66,98,98,2,0,67,67,99,99,2,0,68,68,
- 100,100,2,0,69,69,101,101,2,0,70,70,102,102,2,0,71,71,103,103,2,0,72,
- 72,104,104,2,0,73,73,105,105,2,0,75,75,107,107,2,0,76,76,108,108,2,0,
- 77,77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80,80,112,112,2,
- 0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115,2,0,84,84,116,116,
- 2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87,119,119,2,0,88,88,120,120,
- 2,0,89,89,121,121,2,0,90,90,122,122,3,0,85,85,117,117,124,124,1,0,0,127,
- 1,0,48,57,4,0,10,10,12,13,34,34,92,92,4,0,10,10,12,13,39,39,92,92,1544,
- 0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,
- 0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,
- 0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,43,1,0,0,0,0,47,1,0,0,0,0,49,
- 1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,
- 1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,
- 1,0,0,0,0,129,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,
- 1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,165,
- 1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,
- 1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,
- 1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,195,1,0,0,0,0,197,
- 1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,
- 1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,
- 1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,1,227,
- 1,0,0,0,3,229,1,0,0,0,5,231,1,0,0,0,7,233,1,0,0,0,9,235,1,0,0,0,11,237,
- 1,0,0,0,13,239,1,0,0,0,15,241,1,0,0,0,17,243,1,0,0,0,19,245,1,0,0,0,21,
- 247,1,0,0,0,23,249,1,0,0,0,25,251,1,0,0,0,27,253,1,0,0,0,29,255,1,0,0,
- 0,31,257,1,0,0,0,33,263,1,0,0,0,35,265,1,0,0,0,37,287,1,0,0,0,39,292,
- 1,0,0,0,41,297,1,0,0,0,43,299,1,0,0,0,45,333,1,0,0,0,47,337,1,0,0,0,49,
- 354,1,0,0,0,51,360,1,0,0,0,53,366,1,0,0,0,55,369,1,0,0,0,57,391,1,0,0,
- 0,59,404,1,0,0,0,61,417,1,0,0,0,63,430,1,0,0,0,65,443,1,0,0,0,67,456,
- 1,0,0,0,69,473,1,0,0,0,71,490,1,0,0,0,73,507,1,0,0,0,75,524,1,0,0,0,77,
- 541,1,0,0,0,79,558,1,0,0,0,81,575,1,0,0,0,83,592,1,0,0,0,85,609,1,0,0,
- 0,87,626,1,0,0,0,89,643,1,0,0,0,91,660,1,0,0,0,93,677,1,0,0,0,95,694,
- 1,0,0,0,97,711,1,0,0,0,99,728,1,0,0,0,101,745,1,0,0,0,103,762,1,0,0,0,
- 105,779,1,0,0,0,107,789,1,0,0,0,109,791,1,0,0,0,111,796,1,0,0,0,113,800,
- 1,0,0,0,115,803,1,0,0,0,117,806,1,0,0,0,119,809,1,0,0,0,121,817,1,0,0,
- 0,123,823,1,0,0,0,125,830,1,0,0,0,127,841,1,0,0,0,129,851,1,0,0,0,131,
- 886,1,0,0,0,133,908,1,0,0,0,135,937,1,0,0,0,137,961,1,0,0,0,139,970,1,
- 0,0,0,141,981,1,0,0,0,143,983,1,0,0,0,145,986,1,0,0,0,147,1080,1,0,0,
- 0,149,1082,1,0,0,0,151,1087,1,0,0,0,153,1091,1,0,0,0,155,1112,1,0,0,0,
- 157,1117,1,0,0,0,159,1124,1,0,0,0,161,1126,1,0,0,0,163,1129,1,0,0,0,165,
- 1131,1,0,0,0,167,1133,1,0,0,0,169,1135,1,0,0,0,171,1137,1,0,0,0,173,1139,
- 1,0,0,0,175,1141,1,0,0,0,177,1164,1,0,0,0,179,1190,1,0,0,0,181,1192,1,
- 0,0,0,183,1195,1,0,0,0,185,1198,1,0,0,0,187,1201,1,0,0,0,189,1212,1,0,
- 0,0,191,1222,1,0,0,0,193,1244,1,0,0,0,195,1246,1,0,0,0,197,1260,1,0,0,
- 0,199,1265,1,0,0,0,201,1268,1,0,0,0,203,1274,1,0,0,0,205,1279,1,0,0,0,
- 207,1285,1,0,0,0,209,1295,1,0,0,0,211,1310,1,0,0,0,213,1331,1,0,0,0,215,
- 1368,1,0,0,0,217,1371,1,0,0,0,219,1381,1,0,0,0,221,1387,1,0,0,0,223,1396,
- 1,0,0,0,225,1399,1,0,0,0,227,228,5,91,0,0,228,2,1,0,0,0,229,230,5,93,
- 0,0,230,4,1,0,0,0,231,232,5,40,0,0,232,6,1,0,0,0,233,234,5,41,0,0,234,
- 8,1,0,0,0,235,236,5,123,0,0,236,10,1,0,0,0,237,238,5,125,0,0,238,12,1,
- 0,0,0,239,240,5,59,0,0,240,14,1,0,0,0,241,242,5,61,0,0,242,16,1,0,0,0,
- 243,244,5,58,0,0,244,18,1,0,0,0,245,246,5,46,0,0,246,20,1,0,0,0,247,248,
- 5,42,0,0,248,22,1,0,0,0,249,250,5,47,0,0,250,24,1,0,0,0,251,252,5,124,
- 0,0,252,26,1,0,0,0,253,254,5,95,0,0,254,28,1,0,0,0,255,256,5,64,0,0,256,
- 30,1,0,0,0,257,258,7,0,0,0,258,32,1,0,0,0,259,260,5,13,0,0,260,264,5,
- 10,0,0,261,264,7,1,0,0,262,264,1,0,0,0,263,259,1,0,0,0,263,261,1,0,0,
- 0,263,262,1,0,0,0,264,34,1,0,0,0,265,266,5,92,0,0,266,268,3,31,15,0,267,
- 269,3,31,15,0,268,267,1,0,0,0,268,269,1,0,0,0,269,271,1,0,0,0,270,272,
- 3,31,15,0,271,270,1,0,0,0,271,272,1,0,0,0,272,274,1,0,0,0,273,275,3,31,
- 15,0,274,273,1,0,0,0,274,275,1,0,0,0,275,277,1,0,0,0,276,278,3,31,15,
- 0,277,276,1,0,0,0,277,278,1,0,0,0,278,280,1,0,0,0,279,281,3,31,15,0,280,
- 279,1,0,0,0,280,281,1,0,0,0,281,282,1,0,0,0,282,283,3,33,16,0,283,36,
- 1,0,0,0,284,288,3,35,17,0,285,286,5,92,0,0,286,288,8,2,0,0,287,284,1,
- 0,0,0,287,285,1,0,0,0,288,38,1,0,0,0,289,293,7,3,0,0,290,293,3,163,81,
- 0,291,293,3,37,18,0,292,289,1,0,0,0,292,290,1,0,0,0,292,291,1,0,0,0,293,
- 40,1,0,0,0,294,298,7,4,0,0,295,298,3,163,81,0,296,298,3,37,18,0,297,294,
- 1,0,0,0,297,295,1,0,0,0,297,296,1,0,0,0,298,42,1,0,0,0,299,300,5,47,0,
- 0,300,301,5,42,0,0,301,305,1,0,0,0,302,304,8,5,0,0,303,302,1,0,0,0,304,
- 307,1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,309,1,0,0,0,307,305,1,
- 0,0,0,308,310,5,42,0,0,309,308,1,0,0,0,310,311,1,0,0,0,311,309,1,0,0,
- 0,311,312,1,0,0,0,312,327,1,0,0,0,313,317,8,6,0,0,314,316,8,5,0,0,315,
- 314,1,0,0,0,316,319,1,0,0,0,317,315,1,0,0,0,317,318,1,0,0,0,318,321,1,
- 0,0,0,319,317,1,0,0,0,320,322,5,42,0,0,321,320,1,0,0,0,322,323,1,0,0,
- 0,323,321,1,0,0,0,323,324,1,0,0,0,324,326,1,0,0,0,325,313,1,0,0,0,326,
- 329,1,0,0,0,327,325,1,0,0,0,327,328,1,0,0,0,328,330,1,0,0,0,329,327,1,
- 0,0,0,330,331,5,47,0,0,331,44,1,0,0,0,332,334,3,41,20,0,333,332,1,0,0,
- 0,334,335,1,0,0,0,335,333,1,0,0,0,335,336,1,0,0,0,336,46,1,0,0,0,337,
- 338,3,95,47,0,338,339,3,89,44,0,339,340,3,77,38,0,340,341,5,40,0,0,341,
- 347,3,51,25,0,342,346,7,7,0,0,343,346,3,163,81,0,344,346,3,37,18,0,345,
- 342,1,0,0,0,345,343,1,0,0,0,345,344,1,0,0,0,346,349,1,0,0,0,347,345,1,
- 0,0,0,347,348,1,0,0,0,348,350,1,0,0,0,349,347,1,0,0,0,350,351,3,51,25,
- 0,351,352,5,41,0,0,352,48,1,0,0,0,353,355,7,1,0,0,354,353,1,0,0,0,355,
- 356,1,0,0,0,356,354,1,0,0,0,356,357,1,0,0,0,357,50,1,0,0,0,358,361,3,
- 49,24,0,359,361,1,0,0,0,360,358,1,0,0,0,360,359,1,0,0,0,361,52,1,0,0,
- 0,362,367,5,10,0,0,363,364,5,13,0,0,364,367,5,10,0,0,365,367,2,12,13,
- 0,366,362,1,0,0,0,366,363,1,0,0,0,366,365,1,0,0,0,367,54,1,0,0,0,368,
- 370,5,48,0,0,369,368,1,0,0,0,369,370,1,0,0,0,370,372,1,0,0,0,371,373,
- 5,48,0,0,372,371,1,0,0,0,372,373,1,0,0,0,373,375,1,0,0,0,374,376,5,48,
- 0,0,375,374,1,0,0,0,375,376,1,0,0,0,376,378,1,0,0,0,377,379,5,48,0,0,
- 378,377,1,0,0,0,378,379,1,0,0,0,379,56,1,0,0,0,380,392,7,8,0,0,381,382,
- 5,92,0,0,382,387,3,55,27,0,383,384,5,52,0,0,384,388,5,49,0,0,385,386,
- 5,54,0,0,386,388,5,49,0,0,387,383,1,0,0,0,387,385,1,0,0,0,388,389,1,0,
- 0,0,389,390,3,33,16,0,390,392,1,0,0,0,391,380,1,0,0,0,391,381,1,0,0,0,
- 392,58,1,0,0,0,393,405,7,9,0,0,394,395,5,92,0,0,395,400,3,55,27,0,396,
- 397,5,52,0,0,397,401,5,50,0,0,398,399,5,54,0,0,399,401,5,50,0,0,400,396,
- 1,0,0,0,400,398,1,0,0,0,401,402,1,0,0,0,402,403,3,33,16,0,403,405,1,0,
- 0,0,404,393,1,0,0,0,404,394,1,0,0,0,405,60,1,0,0,0,406,418,7,10,0,0,407,
- 408,5,92,0,0,408,413,3,55,27,0,409,410,5,52,0,0,410,414,5,51,0,0,411,
- 412,5,54,0,0,412,414,5,51,0,0,413,409,1,0,0,0,413,411,1,0,0,0,414,415,
- 1,0,0,0,415,416,3,33,16,0,416,418,1,0,0,0,417,406,1,0,0,0,417,407,1,0,
- 0,0,418,62,1,0,0,0,419,431,7,11,0,0,420,421,5,92,0,0,421,426,3,55,27,
- 0,422,423,5,52,0,0,423,427,5,52,0,0,424,425,5,54,0,0,425,427,5,52,0,0,
- 426,422,1,0,0,0,426,424,1,0,0,0,427,428,1,0,0,0,428,429,3,33,16,0,429,
- 431,1,0,0,0,430,419,1,0,0,0,430,420,1,0,0,0,431,64,1,0,0,0,432,444,7,
- 12,0,0,433,434,5,92,0,0,434,439,3,55,27,0,435,436,5,52,0,0,436,440,5,
- 53,0,0,437,438,5,54,0,0,438,440,5,53,0,0,439,435,1,0,0,0,439,437,1,0,
- 0,0,440,441,1,0,0,0,441,442,3,33,16,0,442,444,1,0,0,0,443,432,1,0,0,0,
- 443,433,1,0,0,0,444,66,1,0,0,0,445,457,7,13,0,0,446,447,5,92,0,0,447,
- 452,3,55,27,0,448,449,5,52,0,0,449,453,5,54,0,0,450,451,5,54,0,0,451,
- 453,5,54,0,0,452,448,1,0,0,0,452,450,1,0,0,0,453,454,1,0,0,0,454,455,
- 3,33,16,0,455,457,1,0,0,0,456,445,1,0,0,0,456,446,1,0,0,0,457,68,1,0,
- 0,0,458,474,7,14,0,0,459,460,5,92,0,0,460,465,3,55,27,0,461,462,5,52,
- 0,0,462,466,5,55,0,0,463,464,5,54,0,0,464,466,5,55,0,0,465,461,1,0,0,
- 0,465,463,1,0,0,0,466,467,1,0,0,0,467,468,3,33,16,0,468,474,1,0,0,0,469,
- 470,5,92,0,0,470,474,5,103,0,0,471,472,5,92,0,0,472,474,5,71,0,0,473,
- 458,1,0,0,0,473,459,1,0,0,0,473,469,1,0,0,0,473,471,1,0,0,0,474,70,1,
- 0,0,0,475,491,7,15,0,0,476,477,5,92,0,0,477,482,3,55,27,0,478,479,5,52,
- 0,0,479,483,5,56,0,0,480,481,5,54,0,0,481,483,5,56,0,0,482,478,1,0,0,
- 0,482,480,1,0,0,0,483,484,1,0,0,0,484,485,3,33,16,0,485,491,1,0,0,0,486,
- 487,5,92,0,0,487,491,5,104,0,0,488,489,5,92,0,0,489,491,5,72,0,0,490,
- 475,1,0,0,0,490,476,1,0,0,0,490,486,1,0,0,0,490,488,1,0,0,0,491,72,1,
- 0,0,0,492,508,7,16,0,0,493,494,5,92,0,0,494,499,3,55,27,0,495,496,5,52,
- 0,0,496,500,5,57,0,0,497,498,5,54,0,0,498,500,5,57,0,0,499,495,1,0,0,
- 0,499,497,1,0,0,0,500,501,1,0,0,0,501,502,3,33,16,0,502,508,1,0,0,0,503,
- 504,5,92,0,0,504,508,5,105,0,0,505,506,5,92,0,0,506,508,5,73,0,0,507,
- 492,1,0,0,0,507,493,1,0,0,0,507,503,1,0,0,0,507,505,1,0,0,0,508,74,1,
- 0,0,0,509,525,7,17,0,0,510,511,5,92,0,0,511,516,3,55,27,0,512,513,5,52,
- 0,0,513,517,5,98,0,0,514,515,5,54,0,0,515,517,5,98,0,0,516,512,1,0,0,
- 0,516,514,1,0,0,0,517,518,1,0,0,0,518,519,3,33,16,0,519,525,1,0,0,0,520,
- 521,5,92,0,0,521,525,5,107,0,0,522,523,5,92,0,0,523,525,5,75,0,0,524,
- 509,1,0,0,0,524,510,1,0,0,0,524,520,1,0,0,0,524,522,1,0,0,0,525,76,1,
- 0,0,0,526,542,7,18,0,0,527,528,5,92,0,0,528,533,3,55,27,0,529,530,5,52,
- 0,0,530,534,5,99,0,0,531,532,5,54,0,0,532,534,5,99,0,0,533,529,1,0,0,
- 0,533,531,1,0,0,0,534,535,1,0,0,0,535,536,3,33,16,0,536,542,1,0,0,0,537,
- 538,5,92,0,0,538,542,5,108,0,0,539,540,5,92,0,0,540,542,5,76,0,0,541,
- 526,1,0,0,0,541,527,1,0,0,0,541,537,1,0,0,0,541,539,1,0,0,0,542,78,1,
- 0,0,0,543,559,7,19,0,0,544,545,5,92,0,0,545,550,3,55,27,0,546,547,5,52,
- 0,0,547,551,5,100,0,0,548,549,5,54,0,0,549,551,5,100,0,0,550,546,1,0,
- 0,0,550,548,1,0,0,0,551,552,1,0,0,0,552,553,3,33,16,0,553,559,1,0,0,0,
- 554,555,5,92,0,0,555,559,5,109,0,0,556,557,5,92,0,0,557,559,5,77,0,0,
- 558,543,1,0,0,0,558,544,1,0,0,0,558,554,1,0,0,0,558,556,1,0,0,0,559,80,
- 1,0,0,0,560,576,7,20,0,0,561,562,5,92,0,0,562,567,3,55,27,0,563,564,5,
- 52,0,0,564,568,5,101,0,0,565,566,5,54,0,0,566,568,5,101,0,0,567,563,1,
- 0,0,0,567,565,1,0,0,0,568,569,1,0,0,0,569,570,3,33,16,0,570,576,1,0,0,
- 0,571,572,5,92,0,0,572,576,5,110,0,0,573,574,5,92,0,0,574,576,5,78,0,
- 0,575,560,1,0,0,0,575,561,1,0,0,0,575,571,1,0,0,0,575,573,1,0,0,0,576,
- 82,1,0,0,0,577,593,7,21,0,0,578,579,5,92,0,0,579,584,3,55,27,0,580,581,
- 5,52,0,0,581,585,5,102,0,0,582,583,5,54,0,0,583,585,5,102,0,0,584,580,
- 1,0,0,0,584,582,1,0,0,0,585,586,1,0,0,0,586,587,3,33,16,0,587,593,1,0,
- 0,0,588,589,5,92,0,0,589,593,5,111,0,0,590,591,5,92,0,0,591,593,5,79,
- 0,0,592,577,1,0,0,0,592,578,1,0,0,0,592,588,1,0,0,0,592,590,1,0,0,0,593,
- 84,1,0,0,0,594,610,7,22,0,0,595,596,5,92,0,0,596,601,3,55,27,0,597,598,
- 5,53,0,0,598,602,5,48,0,0,599,600,5,55,0,0,600,602,5,48,0,0,601,597,1,
- 0,0,0,601,599,1,0,0,0,602,603,1,0,0,0,603,604,3,33,16,0,604,610,1,0,0,
- 0,605,606,5,92,0,0,606,610,5,112,0,0,607,608,5,92,0,0,608,610,5,80,0,
- 0,609,594,1,0,0,0,609,595,1,0,0,0,609,605,1,0,0,0,609,607,1,0,0,0,610,
- 86,1,0,0,0,611,627,7,23,0,0,612,613,5,92,0,0,613,618,3,55,27,0,614,615,
- 5,53,0,0,615,619,5,49,0,0,616,617,5,55,0,0,617,619,5,49,0,0,618,614,1,
- 0,0,0,618,616,1,0,0,0,619,620,1,0,0,0,620,621,3,33,16,0,621,627,1,0,0,
- 0,622,623,5,92,0,0,623,627,5,113,0,0,624,625,5,92,0,0,625,627,5,81,0,
- 0,626,611,1,0,0,0,626,612,1,0,0,0,626,622,1,0,0,0,626,624,1,0,0,0,627,
- 88,1,0,0,0,628,644,7,24,0,0,629,630,5,92,0,0,630,635,3,55,27,0,631,632,
- 5,53,0,0,632,636,5,50,0,0,633,634,5,55,0,0,634,636,5,50,0,0,635,631,1,
- 0,0,0,635,633,1,0,0,0,636,637,1,0,0,0,637,638,3,33,16,0,638,644,1,0,0,
- 0,639,640,5,92,0,0,640,644,5,114,0,0,641,642,5,92,0,0,642,644,5,82,0,
- 0,643,628,1,0,0,0,643,629,1,0,0,0,643,639,1,0,0,0,643,641,1,0,0,0,644,
- 90,1,0,0,0,645,661,7,25,0,0,646,647,5,92,0,0,647,652,3,55,27,0,648,649,
- 5,53,0,0,649,653,5,51,0,0,650,651,5,55,0,0,651,653,5,51,0,0,652,648,1,
- 0,0,0,652,650,1,0,0,0,653,654,1,0,0,0,654,655,3,33,16,0,655,661,1,0,0,
- 0,656,657,5,92,0,0,657,661,5,115,0,0,658,659,5,92,0,0,659,661,5,83,0,
- 0,660,645,1,0,0,0,660,646,1,0,0,0,660,656,1,0,0,0,660,658,1,0,0,0,661,
- 92,1,0,0,0,662,678,7,26,0,0,663,664,5,92,0,0,664,669,3,55,27,0,665,666,
- 5,53,0,0,666,670,5,52,0,0,667,668,5,55,0,0,668,670,5,52,0,0,669,665,1,
- 0,0,0,669,667,1,0,0,0,670,671,1,0,0,0,671,672,3,33,16,0,672,678,1,0,0,
- 0,673,674,5,92,0,0,674,678,5,116,0,0,675,676,5,92,0,0,676,678,5,84,0,
- 0,677,662,1,0,0,0,677,663,1,0,0,0,677,673,1,0,0,0,677,675,1,0,0,0,678,
- 94,1,0,0,0,679,695,7,27,0,0,680,681,5,92,0,0,681,686,3,55,27,0,682,683,
- 5,53,0,0,683,687,5,53,0,0,684,685,5,55,0,0,685,687,5,53,0,0,686,682,1,
- 0,0,0,686,684,1,0,0,0,687,688,1,0,0,0,688,689,3,33,16,0,689,695,1,0,0,
- 0,690,691,5,92,0,0,691,695,5,117,0,0,692,693,5,92,0,0,693,695,5,85,0,
- 0,694,679,1,0,0,0,694,680,1,0,0,0,694,690,1,0,0,0,694,692,1,0,0,0,695,
- 96,1,0,0,0,696,712,7,28,0,0,697,698,5,92,0,0,698,703,3,55,27,0,699,700,
- 5,53,0,0,700,704,5,54,0,0,701,702,5,55,0,0,702,704,5,54,0,0,703,699,1,
- 0,0,0,703,701,1,0,0,0,704,705,1,0,0,0,705,706,3,33,16,0,706,712,1,0,0,
- 0,707,708,5,92,0,0,708,712,5,118,0,0,709,710,5,92,0,0,710,712,5,86,0,
- 0,711,696,1,0,0,0,711,697,1,0,0,0,711,707,1,0,0,0,711,709,1,0,0,0,712,
- 98,1,0,0,0,713,729,7,29,0,0,714,715,5,92,0,0,715,720,3,55,27,0,716,717,
- 5,53,0,0,717,721,5,55,0,0,718,719,5,55,0,0,719,721,5,55,0,0,720,716,1,
- 0,0,0,720,718,1,0,0,0,721,722,1,0,0,0,722,723,3,33,16,0,723,729,1,0,0,
- 0,724,725,5,92,0,0,725,729,5,119,0,0,726,727,5,92,0,0,727,729,5,87,0,
- 0,728,713,1,0,0,0,728,714,1,0,0,0,728,724,1,0,0,0,728,726,1,0,0,0,729,
- 100,1,0,0,0,730,746,7,30,0,0,731,732,5,92,0,0,732,737,3,55,27,0,733,734,
- 5,53,0,0,734,738,5,56,0,0,735,736,5,55,0,0,736,738,5,56,0,0,737,733,1,
- 0,0,0,737,735,1,0,0,0,738,739,1,0,0,0,739,740,3,33,16,0,740,746,1,0,0,
- 0,741,742,5,92,0,0,742,746,5,120,0,0,743,744,5,92,0,0,744,746,5,88,0,
- 0,745,730,1,0,0,0,745,731,1,0,0,0,745,741,1,0,0,0,745,743,1,0,0,0,746,
- 102,1,0,0,0,747,763,7,31,0,0,748,749,5,92,0,0,749,754,3,55,27,0,750,751,
- 5,53,0,0,751,755,5,57,0,0,752,753,5,55,0,0,753,755,5,57,0,0,754,750,1,
- 0,0,0,754,752,1,0,0,0,755,756,1,0,0,0,756,757,3,33,16,0,757,763,1,0,0,
- 0,758,759,5,92,0,0,759,763,5,121,0,0,760,761,5,92,0,0,761,763,5,89,0,
- 0,762,747,1,0,0,0,762,748,1,0,0,0,762,758,1,0,0,0,762,760,1,0,0,0,763,
- 104,1,0,0,0,764,780,7,32,0,0,765,766,5,92,0,0,766,771,3,55,27,0,767,768,
- 5,53,0,0,768,772,5,97,0,0,769,770,5,55,0,0,770,772,5,97,0,0,771,767,1,
- 0,0,0,771,769,1,0,0,0,772,773,1,0,0,0,773,774,3,33,16,0,774,780,1,0,0,
- 0,775,776,5,92,0,0,776,780,5,122,0,0,777,778,5,92,0,0,778,780,5,90,0,
- 0,779,764,1,0,0,0,779,765,1,0,0,0,779,775,1,0,0,0,779,777,1,0,0,0,780,
- 106,1,0,0,0,781,790,5,45,0,0,782,783,5,92,0,0,783,784,3,55,27,0,784,785,
- 5,50,0,0,785,786,5,100,0,0,786,787,1,0,0,0,787,788,3,33,16,0,788,790,
- 1,0,0,0,789,781,1,0,0,0,789,782,1,0,0,0,790,108,1,0,0,0,791,792,5,60,
- 0,0,792,793,5,33,0,0,793,794,5,45,0,0,794,795,5,45,0,0,795,110,1,0,0,
- 0,796,797,5,45,0,0,797,798,5,45,0,0,798,799,5,62,0,0,799,112,1,0,0,0,
- 800,801,5,126,0,0,801,802,5,61,0,0,802,114,1,0,0,0,803,804,5,124,0,0,
- 804,805,5,61,0,0,805,116,1,0,0,0,806,807,5,35,0,0,807,808,3,45,22,0,808,
- 118,1,0,0,0,809,810,3,29,14,0,810,811,3,73,36,0,811,812,3,79,39,0,812,
- 813,3,85,42,0,813,814,3,83,41,0,814,815,3,89,44,0,815,816,3,93,46,0,816,
- 120,1,0,0,0,817,818,3,29,14,0,818,819,3,85,42,0,819,820,3,57,28,0,820,
- 821,3,69,34,0,821,822,3,65,32,0,822,122,1,0,0,0,823,824,3,29,14,0,824,
- 825,3,79,39,0,825,826,3,65,32,0,826,827,3,63,31,0,827,828,3,73,36,0,828,
- 829,3,57,28,0,829,124,1,0,0,0,830,831,3,29,14,0,831,832,3,81,40,0,832,
- 833,3,57,28,0,833,834,3,79,39,0,834,835,3,65,32,0,835,836,3,91,45,0,836,
- 837,3,85,42,0,837,838,3,57,28,0,838,839,3,61,30,0,839,840,3,65,32,0,840,
- 126,1,0,0,0,841,842,5,64,0,0,842,843,5,99,0,0,843,844,5,104,0,0,844,845,
- 5,97,0,0,845,846,5,114,0,0,846,847,5,115,0,0,847,848,5,101,0,0,848,849,
- 5,116,0,0,849,850,5,32,0,0,850,128,1,0,0,0,851,856,5,33,0,0,852,855,3,
- 49,24,0,853,855,3,43,21,0,854,852,1,0,0,0,854,853,1,0,0,0,855,858,1,0,
- 0,0,856,854,1,0,0,0,856,857,1,0,0,0,857,859,1,0,0,0,858,856,1,0,0,0,859,
- 860,3,73,36,0,860,861,3,79,39,0,861,862,3,85,42,0,862,863,3,83,41,0,863,
- 864,3,89,44,0,864,865,3,93,46,0,865,866,3,57,28,0,866,867,3,81,40,0,867,
- 868,3,93,46,0,868,130,1,0,0,0,869,870,3,177,88,0,870,871,3,65,32,0,871,
- 872,3,79,39,0,872,887,1,0,0,0,873,874,3,177,88,0,874,875,3,65,32,0,875,
- 876,3,101,50,0,876,887,1,0,0,0,877,878,3,177,88,0,878,879,3,61,30,0,879,
- 880,3,71,35,0,880,887,1,0,0,0,881,882,3,177,88,0,882,883,3,89,44,0,883,
- 884,3,65,32,0,884,885,3,79,39,0,885,887,1,0,0,0,886,869,1,0,0,0,886,873,
- 1,0,0,0,886,877,1,0,0,0,886,881,1,0,0,0,887,132,1,0,0,0,888,889,3,177,
- 88,0,889,890,3,97,48,0,890,891,3,99,49,0,891,909,1,0,0,0,892,893,3,177,
- 88,0,893,894,3,97,48,0,894,895,3,71,35,0,895,909,1,0,0,0,896,897,3,177,
- 88,0,897,898,3,97,48,0,898,899,3,79,39,0,899,900,3,73,36,0,900,901,3,
- 81,40,0,901,909,1,0,0,0,902,903,3,177,88,0,903,904,3,97,48,0,904,905,
- 3,79,39,0,905,906,3,57,28,0,906,907,3,101,50,0,907,909,1,0,0,0,908,888,
- 1,0,0,0,908,892,1,0,0,0,908,896,1,0,0,0,908,902,1,0,0,0,909,134,1,0,0,
- 0,910,911,3,177,88,0,911,912,3,85,42,0,912,913,3,101,50,0,913,938,1,0,
- 0,0,914,915,3,177,88,0,915,916,3,61,30,0,916,917,3,79,39,0,917,938,1,
- 0,0,0,918,919,3,177,88,0,919,920,3,79,39,0,920,921,3,79,39,0,921,938,
- 1,0,0,0,922,923,3,177,88,0,923,924,3,73,36,0,924,925,3,81,40,0,925,938,
- 1,0,0,0,926,927,3,177,88,0,927,928,3,85,42,0,928,929,3,93,46,0,929,938,
- 1,0,0,0,930,931,3,177,88,0,931,932,3,85,42,0,932,933,3,61,30,0,933,938,
- 1,0,0,0,934,935,3,177,88,0,935,936,3,87,43,0,936,938,1,0,0,0,937,910,
- 1,0,0,0,937,914,1,0,0,0,937,918,1,0,0,0,937,922,1,0,0,0,937,926,1,0,0,
- 0,937,930,1,0,0,0,937,934,1,0,0,0,938,136,1,0,0,0,939,940,3,177,88,0,
- 940,941,3,63,31,0,941,942,3,65,32,0,942,943,3,69,34,0,943,962,1,0,0,0,
- 944,945,3,177,88,0,945,946,3,89,44,0,946,947,3,57,28,0,947,948,3,63,31,
- 0,948,962,1,0,0,0,949,950,3,177,88,0,950,951,3,69,34,0,951,952,3,89,44,
- 0,952,953,3,57,28,0,953,954,3,63,31,0,954,962,1,0,0,0,955,956,3,177,88,
- 0,956,957,3,93,46,0,957,958,3,95,47,0,958,959,3,89,44,0,959,960,3,81,
- 40,0,960,962,1,0,0,0,961,939,1,0,0,0,961,944,1,0,0,0,961,949,1,0,0,0,
- 961,955,1,0,0,0,962,138,1,0,0,0,963,964,3,177,88,0,964,965,3,79,39,0,
- 965,966,3,91,45,0,966,971,1,0,0,0,967,968,3,177,88,0,968,969,3,91,45,
- 0,969,971,1,0,0,0,970,963,1,0,0,0,970,967,1,0,0,0,971,140,1,0,0,0,972,
- 973,3,177,88,0,973,974,3,71,35,0,974,975,3,105,52,0,975,982,1,0,0,0,976,
- 977,3,177,88,0,977,978,3,75,37,0,978,979,3,71,35,0,979,980,3,105,52,0,
- 980,982,1,0,0,0,981,972,1,0,0,0,981,976,1,0,0,0,982,142,1,0,0,0,983,984,
- 3,177,88,0,984,985,5,37,0,0,985,144,1,0,0,0,986,987,5,117,0,0,987,988,
- 5,114,0,0,988,989,5,108,0,0,989,990,5,40,0,0,990,146,1,0,0,0,991,992,
- 7,33,0,0,992,993,5,43,0,0,993,994,5,63,0,0,994,996,1,0,0,0,995,997,5,
- 63,0,0,996,995,1,0,0,0,996,997,1,0,0,0,997,999,1,0,0,0,998,1000,5,63,
- 0,0,999,998,1,0,0,0,999,1000,1,0,0,0,1000,1002,1,0,0,0,1001,1003,5,63,
- 0,0,1002,1001,1,0,0,0,1002,1003,1,0,0,0,1003,1005,1,0,0,0,1004,1006,5,
- 63,0,0,1005,1004,1,0,0,0,1005,1006,1,0,0,0,1006,1008,1,0,0,0,1007,1009,
- 5,63,0,0,1008,1007,1,0,0,0,1008,1009,1,0,0,0,1009,1081,1,0,0,0,1010,1011,
- 7,33,0,0,1011,1012,5,43,0,0,1012,1014,3,31,15,0,1013,1015,5,63,0,0,1014,
- 1013,1,0,0,0,1014,1015,1,0,0,0,1015,1017,1,0,0,0,1016,1018,5,63,0,0,1017,
- 1016,1,0,0,0,1017,1018,1,0,0,0,1018,1020,1,0,0,0,1019,1021,5,63,0,0,1020,
- 1019,1,0,0,0,1020,1021,1,0,0,0,1021,1023,1,0,0,0,1022,1024,5,63,0,0,1023,
- 1022,1,0,0,0,1023,1024,1,0,0,0,1024,1026,1,0,0,0,1025,1027,5,63,0,0,1026,
- 1025,1,0,0,0,1026,1027,1,0,0,0,1027,1081,1,0,0,0,1028,1029,7,33,0,0,1029,
- 1030,5,43,0,0,1030,1031,3,31,15,0,1031,1033,3,31,15,0,1032,1034,5,63,
- 0,0,1033,1032,1,0,0,0,1033,1034,1,0,0,0,1034,1036,1,0,0,0,1035,1037,5,
- 63,0,0,1036,1035,1,0,0,0,1036,1037,1,0,0,0,1037,1039,1,0,0,0,1038,1040,
- 5,63,0,0,1039,1038,1,0,0,0,1039,1040,1,0,0,0,1040,1042,1,0,0,0,1041,1043,
- 5,63,0,0,1042,1041,1,0,0,0,1042,1043,1,0,0,0,1043,1081,1,0,0,0,1044,1045,
- 7,33,0,0,1045,1046,5,43,0,0,1046,1047,3,31,15,0,1047,1048,3,31,15,0,1048,
- 1050,3,31,15,0,1049,1051,5,63,0,0,1050,1049,1,0,0,0,1050,1051,1,0,0,0,
- 1051,1053,1,0,0,0,1052,1054,5,63,0,0,1053,1052,1,0,0,0,1053,1054,1,0,
- 0,0,1054,1056,1,0,0,0,1055,1057,5,63,0,0,1056,1055,1,0,0,0,1056,1057,
- 1,0,0,0,1057,1081,1,0,0,0,1058,1059,7,33,0,0,1059,1060,5,43,0,0,1060,
- 1061,3,31,15,0,1061,1062,3,31,15,0,1062,1063,3,31,15,0,1063,1065,3,31,
- 15,0,1064,1066,5,63,0,0,1065,1064,1,0,0,0,1065,1066,1,0,0,0,1066,1068,
- 1,0,0,0,1067,1069,5,63,0,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1081,
- 1,0,0,0,1070,1071,7,33,0,0,1071,1072,5,43,0,0,1072,1073,3,31,15,0,1073,
- 1074,3,31,15,0,1074,1075,3,31,15,0,1075,1076,3,31,15,0,1076,1078,3,31,
- 15,0,1077,1079,5,63,0,0,1078,1077,1,0,0,0,1078,1079,1,0,0,0,1079,1081,
- 1,0,0,0,1080,991,1,0,0,0,1080,1010,1,0,0,0,1080,1028,1,0,0,0,1080,1044,
- 1,0,0,0,1080,1058,1,0,0,0,1080,1070,1,0,0,0,1081,148,1,0,0,0,1082,1083,
- 3,83,41,0,1083,1084,3,81,40,0,1084,1085,3,77,38,0,1085,1086,3,103,51,
- 0,1086,150,1,0,0,0,1087,1088,3,81,40,0,1088,1089,3,83,41,0,1089,1090,
- 3,93,46,0,1090,152,1,0,0,0,1091,1092,3,57,28,0,1092,1093,3,81,40,0,1093,
- 1094,3,63,31,0,1094,154,1,0,0,0,1095,1096,3,177,88,0,1096,1097,3,63,31,
- 0,1097,1098,3,85,42,0,1098,1099,3,73,36,0,1099,1113,1,0,0,0,1100,1101,
- 3,177,88,0,1101,1102,3,63,31,0,1102,1103,3,85,42,0,1103,1104,3,61,30,
- 0,1104,1105,3,79,39,0,1105,1113,1,0,0,0,1106,1107,3,177,88,0,1107,1108,
- 3,63,31,0,1108,1109,3,85,42,0,1109,1110,3,85,42,0,1110,1111,3,101,50,
- 0,1111,1113,1,0,0,0,1112,1095,1,0,0,0,1112,1100,1,0,0,0,1112,1106,1,0,
- 0,0,1113,156,1,0,0,0,1114,1118,3,135,67,0,1115,1118,3,131,65,0,1116,1118,
- 3,133,66,0,1117,1114,1,0,0,0,1117,1115,1,0,0,0,1117,1116,1,0,0,0,1118,
- 158,1,0,0,0,1119,1125,3,157,78,0,1120,1125,3,139,69,0,1121,1125,3,141,
- 70,0,1122,1125,3,155,77,0,1123,1125,3,137,68,0,1124,1119,1,0,0,0,1124,
- 1120,1,0,0,0,1124,1121,1,0,0,0,1124,1122,1,0,0,0,1124,1123,1,0,0,0,1125,
- 160,1,0,0,0,1126,1127,3,177,88,0,1127,1128,3,221,110,0,1128,162,1,0,0,
- 0,1129,1130,8,34,0,0,1130,164,1,0,0,0,1131,1132,5,43,0,0,1132,166,1,0,
- 0,0,1133,1134,5,45,0,0,1134,168,1,0,0,0,1135,1136,5,62,0,0,1136,170,1,
- 0,0,0,1137,1138,5,44,0,0,1138,172,1,0,0,0,1139,1140,5,126,0,0,1140,174,
- 1,0,0,0,1141,1142,5,58,0,0,1142,1143,3,81,40,0,1143,1144,3,83,41,0,1144,
- 1145,3,93,46,0,1145,1146,5,40,0,0,1146,176,1,0,0,0,1147,1149,7,35,0,0,
- 1148,1147,1,0,0,0,1149,1150,1,0,0,0,1150,1148,1,0,0,0,1150,1151,1,0,0,
- 0,1151,1165,1,0,0,0,1152,1154,7,35,0,0,1153,1152,1,0,0,0,1154,1157,1,
- 0,0,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156,1158,1,0,0,0,1157,1155,
- 1,0,0,0,1158,1160,5,46,0,0,1159,1161,7,35,0,0,1160,1159,1,0,0,0,1161,
- 1162,1,0,0,0,1162,1160,1,0,0,0,1162,1163,1,0,0,0,1163,1165,1,0,0,0,1164,
- 1148,1,0,0,0,1164,1155,1,0,0,0,1165,178,1,0,0,0,1166,1174,5,34,0,0,1167,
- 1173,8,36,0,0,1168,1169,5,92,0,0,1169,1173,3,53,26,0,1170,1173,3,163,
- 81,0,1171,1173,3,37,18,0,1172,1167,1,0,0,0,1172,1168,1,0,0,0,1172,1170,
- 1,0,0,0,1172,1171,1,0,0,0,1173,1176,1,0,0,0,1174,1172,1,0,0,0,1174,1175,
- 1,0,0,0,1175,1177,1,0,0,0,1176,1174,1,0,0,0,1177,1191,5,34,0,0,1178,1186,
- 5,39,0,0,1179,1185,8,37,0,0,1180,1181,5,92,0,0,1181,1185,3,53,26,0,1182,
- 1185,3,163,81,0,1183,1185,3,37,18,0,1184,1179,1,0,0,0,1184,1180,1,0,0,
- 0,1184,1182,1,0,0,0,1184,1183,1,0,0,0,1185,1188,1,0,0,0,1186,1184,1,0,
- 0,0,1186,1187,1,0,0,0,1187,1189,1,0,0,0,1188,1186,1,0,0,0,1189,1191,5,
- 39,0,0,1190,1166,1,0,0,0,1190,1178,1,0,0,0,1191,180,1,0,0,0,1192,1193,
- 5,94,0,0,1193,1194,5,61,0,0,1194,182,1,0,0,0,1195,1196,5,36,0,0,1196,
- 1197,5,61,0,0,1197,184,1,0,0,0,1198,1199,5,42,0,0,1199,1200,5,61,0,0,
- 1200,186,1,0,0,0,1201,1202,3,29,14,0,1202,1203,3,67,33,0,1203,1204,3,
- 83,41,0,1204,1205,3,81,40,0,1205,1206,3,93,46,0,1206,1207,3,107,53,0,
- 1207,1208,3,67,33,0,1208,1209,3,57,28,0,1209,1210,3,61,30,0,1210,1211,
- 3,65,32,0,1211,188,1,0,0,0,1212,1213,3,29,14,0,1213,1214,3,91,45,0,1214,
- 1215,3,95,47,0,1215,1216,3,85,42,0,1216,1217,3,85,42,0,1217,1218,3,83,
- 41,0,1218,1219,3,89,44,0,1219,1220,3,93,46,0,1220,1221,3,91,45,0,1221,
- 190,1,0,0,0,1222,1223,3,83,41,0,1223,1224,3,89,44,0,1224,192,1,0,0,0,
- 1225,1226,5,45,0,0,1226,1227,3,79,39,0,1227,1228,3,83,41,0,1228,1229,
- 3,105,52,0,1229,1230,5,45,0,0,1230,1245,1,0,0,0,1231,1232,5,45,0,0,1232,
- 1233,3,99,49,0,1233,1234,3,65,32,0,1234,1235,3,59,29,0,1235,1236,3,75,
- 37,0,1236,1237,3,73,36,0,1237,1238,3,93,46,0,1238,1239,5,45,0,0,1239,
- 1245,1,0,0,0,1240,1241,5,45,0,0,1241,1242,3,83,41,0,1242,1243,5,45,0,
- 0,1243,1245,1,0,0,0,1244,1225,1,0,0,0,1244,1231,1,0,0,0,1244,1240,1,0,
- 0,0,1245,194,1,0,0,0,1246,1248,3,29,14,0,1247,1249,3,193,96,0,1248,1247,
- 1,0,0,0,1248,1249,1,0,0,0,1249,1250,1,0,0,0,1250,1251,3,75,37,0,1251,
- 1252,3,65,32,0,1252,1253,3,103,51,0,1253,1254,3,67,33,0,1254,1255,3,89,
- 44,0,1255,1256,3,57,28,0,1256,1257,3,79,39,0,1257,1258,3,65,32,0,1258,
- 1259,3,91,45,0,1259,196,1,0,0,0,1260,1261,3,67,33,0,1261,1262,3,89,44,
- 0,1262,1263,3,83,41,0,1263,1264,3,79,39,0,1264,198,1,0,0,0,1265,1266,
- 3,93,46,0,1266,1267,3,83,41,0,1267,200,1,0,0,0,1268,1269,5,99,0,0,1269,
- 1270,5,97,0,0,1270,1271,5,108,0,0,1271,1272,5,99,0,0,1272,1273,5,40,0,
- 0,1273,202,1,0,0,0,1274,1275,5,114,0,0,1275,1276,5,103,0,0,1276,1277,
- 5,98,0,0,1277,1278,5,40,0,0,1278,204,1,0,0,0,1279,1280,5,114,0,0,1280,
- 1281,5,103,0,0,1281,1282,5,98,0,0,1282,1283,5,97,0,0,1283,1284,5,40,0,
- 0,1284,206,1,0,0,0,1285,1286,3,29,14,0,1286,1287,3,97,48,0,1287,1288,
- 3,73,36,0,1288,1289,3,65,32,0,1289,1290,3,99,49,0,1290,1291,3,85,42,0,
- 1291,1292,3,83,41,0,1292,1293,3,89,44,0,1293,1294,3,93,46,0,1294,208,
- 1,0,0,0,1295,1296,3,29,14,0,1296,1297,3,61,30,0,1297,1298,3,83,41,0,1298,
- 1299,3,95,47,0,1299,1300,3,81,40,0,1300,1301,3,93,46,0,1301,1302,3,65,
- 32,0,1302,1303,3,89,44,0,1303,1304,3,107,53,0,1304,1305,3,91,45,0,1305,
- 1306,3,93,46,0,1306,1307,3,103,51,0,1307,1308,3,77,38,0,1308,1309,3,65,
- 32,0,1309,210,1,0,0,0,1310,1311,3,29,14,0,1311,1312,3,67,33,0,1312,1313,
- 3,83,41,0,1313,1314,3,81,40,0,1314,1315,3,93,46,0,1315,1316,3,107,53,
- 0,1316,1317,3,67,33,0,1317,1318,3,65,32,0,1318,1319,3,57,28,0,1319,1320,
- 3,93,46,0,1320,1321,3,95,47,0,1321,1322,3,89,44,0,1322,1323,3,65,32,0,
- 1323,1324,3,107,53,0,1324,1325,3,97,48,0,1325,1326,3,57,28,0,1326,1327,
- 3,77,38,0,1327,1328,3,95,47,0,1328,1329,3,65,32,0,1329,1330,3,91,45,0,
- 1330,212,1,0,0,0,1331,1332,5,112,0,0,1332,1333,5,114,0,0,1333,1334,5,
- 111,0,0,1334,1335,5,103,0,0,1335,1336,5,105,0,0,1336,1337,5,100,0,0,1337,
- 1338,5,58,0,0,1338,1339,5,68,0,0,1339,1340,5,88,0,0,1340,1341,5,73,0,
- 0,1341,1342,5,109,0,0,1342,1343,5,97,0,0,1343,1344,5,103,0,0,1344,1345,
- 5,101,0,0,1345,1346,5,84,0,0,1346,1347,5,114,0,0,1347,1348,5,97,0,0,1348,
- 1349,5,110,0,0,1349,1350,5,115,0,0,1350,1351,5,102,0,0,1351,1352,5,111,
- 0,0,1352,1353,5,114,0,0,1353,1354,5,109,0,0,1354,1355,5,46,0,0,1355,1356,
- 5,77,0,0,1356,1357,5,105,0,0,1357,1358,5,99,0,0,1358,1359,5,114,0,0,1359,
- 1360,5,111,0,0,1360,1361,5,115,0,0,1361,1362,5,111,0,0,1362,1363,5,102,
- 0,0,1363,1364,5,116,0,0,1364,1365,5,46,0,0,1365,1366,1,0,0,0,1366,1367,
- 3,223,111,0,1367,214,1,0,0,0,1368,1369,3,29,14,0,1369,1370,3,221,110,
- 0,1370,216,1,0,0,0,1371,1372,5,45,0,0,1372,1373,5,45,0,0,1373,1374,1,
- 0,0,0,1374,1378,3,39,19,0,1375,1377,3,41,20,0,1376,1375,1,0,0,0,1377,
- 1380,1,0,0,0,1378,1376,1,0,0,0,1378,1379,1,0,0,0,1379,218,1,0,0,0,1380,
- 1378,1,0,0,0,1381,1382,5,118,0,0,1382,1383,5,97,0,0,1383,1384,5,114,0,
- 0,1384,1385,5,40,0,0,1385,220,1,0,0,0,1386,1388,5,45,0,0,1387,1386,1,
- 0,0,0,1387,1388,1,0,0,0,1388,1389,1,0,0,0,1389,1393,3,39,19,0,1390,1392,
- 3,41,20,0,1391,1390,1,0,0,0,1392,1395,1,0,0,0,1393,1391,1,0,0,0,1393,
- 1394,1,0,0,0,1394,222,1,0,0,0,1395,1393,1,0,0,0,1396,1397,3,221,110,0,
- 1397,1398,5,40,0,0,1398,224,1,0,0,0,1399,1400,9,0,0,0,1400,1401,1,0,0,
- 0,1401,1402,6,112,0,0,1402,226,1,0,0,0,122,0,263,268,271,274,277,280,
- 287,292,297,305,311,317,323,327,335,345,347,356,360,366,369,372,375,378,
- 387,391,400,404,413,417,426,430,439,443,452,456,465,473,482,490,499,507,
- 516,524,533,541,550,558,567,575,584,592,601,609,618,626,635,643,652,660,
- 669,677,686,694,703,711,720,728,737,745,754,762,771,779,789,854,856,886,
- 908,937,961,970,981,996,999,1002,1005,1008,1014,1017,1020,1023,1026,1033,
- 1036,1039,1042,1050,1053,1056,1065,1068,1078,1080,1112,1117,1124,1150,
- 1155,1162,1164,1172,1174,1184,1186,1190,1244,1248,1378,1387,1393,1,0,
- 2,0
- };
- staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
-
- antlr4::atn::ATNDeserializer deserializer;
- staticData->atn = deserializer.deserialize(staticData->serializedATN);
-
- const size_t count = staticData->atn->getNumberOfDecisions();
- staticData->decisionToDFA.reserve(count);
- for (size_t i = 0; i < count; i++) {
- staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
- }
- css3lexerLexerStaticData = staticData.release();
-}
-
-}
-
-css3Lexer::css3Lexer(CharStream *input) : Lexer(input) {
- css3Lexer::initialize();
- _interpreter = new atn::LexerATNSimulator(this, *css3lexerLexerStaticData->atn, css3lexerLexerStaticData->decisionToDFA, css3lexerLexerStaticData->sharedContextCache);
-}
-
-css3Lexer::~css3Lexer() {
- delete _interpreter;
-}
-
-std::string css3Lexer::getGrammarFileName() const {
- return "css3Lexer.g4";
-}
-
-const std::vector& css3Lexer::getRuleNames() const {
- return css3lexerLexerStaticData->ruleNames;
-}
-
-const std::vector& css3Lexer::getChannelNames() const {
- return css3lexerLexerStaticData->channelNames;
-}
-
-const std::vector& css3Lexer::getModeNames() const {
- return css3lexerLexerStaticData->modeNames;
-}
-
-const dfa::Vocabulary& css3Lexer::getVocabulary() const {
- return css3lexerLexerStaticData->vocabulary;
-}
-
-antlr4::atn::SerializedATNView css3Lexer::getSerializedATN() const {
- return css3lexerLexerStaticData->serializedATN;
-}
-
-const atn::ATN& css3Lexer::getATN() const {
- return *css3lexerLexerStaticData->atn;
-}
-
-
-
-
-void css3Lexer::initialize() {
-#if ANTLR4_USE_THREAD_LOCAL_CACHE
- css3lexerLexerInitialize();
-#else
- ::antlr4::internal::call_once(css3lexerLexerOnceFlag, css3lexerLexerInitialize);
-#endif
-}
diff --git a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.h b/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.h
deleted file mode 100644
index 77cd7f2ee..000000000
--- a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-
-// Generated from /home/creastive/projects/sungear/SungearEngine/Externals/antlr4/css/css3Lexer.g4 by ANTLR 4.13.1
-
-#pragma once
-
-
-#include "antlr4-runtime.h"
-
-
-
-
-class css3Lexer : public antlr4::Lexer {
-public:
- enum {
- OpenBracket = 1, CloseBracket = 2, OpenParen = 3, CloseParen = 4, OpenBrace = 5,
- CloseBrace = 6, SemiColon = 7, Equal = 8, Colon = 9, Dot = 10, Multiply = 11,
- Divide = 12, Pipe = 13, Underscore = 14, Comment = 15, Url = 16, Space = 17,
- Cdo = 18, Cdc = 19, Includes = 20, DashMatch = 21, Hash = 22, Import = 23,
- Page = 24, Media = 25, Namespace = 26, Charset = 27, Important = 28,
- Percentage = 29, Url_ = 30, UnicodeRange = 31, MediaOnly = 32, Not = 33,
- And = 34, Dimension = 35, UnknownDimension = 36, Plus = 37, Minus = 38,
- Greater = 39, Comma = 40, Tilde = 41, PseudoNot = 42, Number = 43, String_ = 44,
- PrefixMatch = 45, SuffixMatch = 46, SubstringMatch = 47, FontFace = 48,
- Supports = 49, Or = 50, Keyframes = 51, From = 52, To = 53, Calc = 54,
- Rgb = 55, Rgba = 56, Viewport = 57, CounterStyle = 58, FontFeatureValues = 59,
- DxImageTransform = 60, AtKeyword = 61, Variable = 62, Var = 63, Ident = 64,
- Function_ = 65, UnexpectedCharacter = 66
- };
-
- enum {
- ERROR = 2
- };
-
- explicit css3Lexer(antlr4::CharStream *input);
-
- ~css3Lexer() override;
-
-
- std::string getGrammarFileName() const override;
-
- const std::vector& getRuleNames() const override;
-
- const std::vector& getChannelNames() const override;
-
- const std::vector& getModeNames() const override;
-
- const antlr4::dfa::Vocabulary& getVocabulary() const override;
-
- antlr4::atn::SerializedATNView getSerializedATN() const override;
-
- const antlr4::atn::ATN& getATN() const override;
-
- // By default the static state used to implement the lexer is lazily initialized during the first
- // call to the constructor. You can call this function if you wish to initialize the static state
- // ahead of time.
- static void initialize();
-
-private:
-
- // Individual action functions triggered by action() above.
-
- // Individual semantic predicate functions triggered by sempred() above.
-
-};
-
diff --git a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.interp b/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.interp
deleted file mode 100644
index ae7812a7b..000000000
--- a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.interp
+++ /dev/null
@@ -1,265 +0,0 @@
-token literal names:
-null
-'['
-']'
-'('
-')'
-'{'
-'}'
-';'
-'='
-':'
-'.'
-'*'
-'/'
-'|'
-'_'
-null
-null
-null
-''
-'~='
-'|='
-null
-null
-null
-null
-null
-'@charset '
-null
-null
-'url('
-null
-null
-null
-null
-null
-null
-'+'
-'-'
-'>'
-','
-'~'
-null
-null
-null
-'^='
-'$='
-'*='
-null
-null
-null
-null
-null
-null
-'calc('
-'rgb('
-'rgba('
-null
-null
-null
-null
-null
-null
-'var('
-null
-null
-null
-
-token symbolic names:
-null
-OpenBracket
-CloseBracket
-OpenParen
-CloseParen
-OpenBrace
-CloseBrace
-SemiColon
-Equal
-Colon
-Dot
-Multiply
-Divide
-Pipe
-Underscore
-Comment
-Url
-Space
-Cdo
-Cdc
-Includes
-DashMatch
-Hash
-Import
-Page
-Media
-Namespace
-Charset
-Important
-Percentage
-Url_
-UnicodeRange
-MediaOnly
-Not
-And
-Dimension
-UnknownDimension
-Plus
-Minus
-Greater
-Comma
-Tilde
-PseudoNot
-Number
-String_
-PrefixMatch
-SuffixMatch
-SubstringMatch
-FontFace
-Supports
-Or
-Keyframes
-From
-To
-Calc
-Rgb
-Rgba
-Viewport
-CounterStyle
-FontFeatureValues
-DxImageTransform
-AtKeyword
-Variable
-Var
-Ident
-Function_
-UnexpectedCharacter
-
-rule names:
-OpenBracket
-CloseBracket
-OpenParen
-CloseParen
-OpenBrace
-CloseBrace
-SemiColon
-Equal
-Colon
-Dot
-Multiply
-Divide
-Pipe
-Underscore
-At
-Hex
-NewlineOrSpace
-Unicode
-Escape
-Nmstart
-Nmchar
-Comment
-Name
-Url
-Space
-Whitespace
-Newline
-ZeroToFourZeros
-A
-B
-C
-D
-E
-F
-G
-H
-I
-K
-L
-M
-N
-O
-P
-Q
-R
-S
-T
-U
-V
-W
-X
-Y
-Z
-DashChar
-Cdo
-Cdc
-Includes
-DashMatch
-Hash
-Import
-Page
-Media
-Namespace
-Charset
-Important
-FontRelative
-ViewportRelative
-AbsLength
-Angle
-Time
-Freq
-Percentage
-Url_
-UnicodeRange
-MediaOnly
-Not
-And
-Resolution
-Length
-Dimension
-UnknownDimension
-Nonascii
-Plus
-Minus
-Greater
-Comma
-Tilde
-PseudoNot
-Number
-String_
-PrefixMatch
-SuffixMatch
-SubstringMatch
-FontFace
-Supports
-Or
-VendorPrefix
-Keyframes
-From
-To
-Calc
-Rgb
-Rgba
-Viewport
-CounterStyle
-FontFeatureValues
-DxImageTransform
-AtKeyword
-Variable
-Var
-Ident
-Function_
-UnexpectedCharacter
-
-channel names:
-DEFAULT_TOKEN_CHANNEL
-HIDDEN
-null
-null
-ERROR
-
-mode names:
-DEFAULT_MODE
-
-atn:
-[4, 0, 66, 1403, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 264, 8, 16, 1, 17, 1, 17, 1, 17, 3, 17, 269, 8, 17, 1, 17, 3, 17, 272, 8, 17, 1, 17, 3, 17, 275, 8, 17, 1, 17, 3, 17, 278, 8, 17, 1, 17, 3, 17, 281, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 3, 18, 288, 8, 18, 1, 19, 1, 19, 1, 19, 3, 19, 293, 8, 19, 1, 20, 1, 20, 1, 20, 3, 20, 298, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 304, 8, 21, 10, 21, 12, 21, 307, 9, 21, 1, 21, 4, 21, 310, 8, 21, 11, 21, 12, 21, 311, 1, 21, 1, 21, 5, 21, 316, 8, 21, 10, 21, 12, 21, 319, 9, 21, 1, 21, 4, 21, 322, 8, 21, 11, 21, 12, 21, 323, 5, 21, 326, 8, 21, 10, 21, 12, 21, 329, 9, 21, 1, 21, 1, 21, 1, 22, 4, 22, 334, 8, 22, 11, 22, 12, 22, 335, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 346, 8, 23, 10, 23, 12, 23, 349, 9, 23, 1, 23, 1, 23, 1, 23, 1, 24, 4, 24, 355, 8, 24, 11, 24, 12, 24, 356, 1, 25, 1, 25, 3, 25, 361, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 367, 8, 26, 1, 27, 3, 27, 370, 8, 27, 1, 27, 3, 27, 373, 8, 27, 1, 27, 3, 27, 376, 8, 27, 1, 27, 3, 27, 379, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 388, 8, 28, 1, 28, 1, 28, 3, 28, 392, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 401, 8, 29, 1, 29, 1, 29, 3, 29, 405, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 414, 8, 30, 1, 30, 1, 30, 3, 30, 418, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 427, 8, 31, 1, 31, 1, 31, 3, 31, 431, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 440, 8, 32, 1, 32, 1, 32, 3, 32, 444, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 453, 8, 33, 1, 33, 1, 33, 3, 33, 457, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 466, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 474, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 483, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 491, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 500, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 508, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 517, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 525, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 534, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 542, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 551, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 559, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 568, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 576, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 585, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 593, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 602, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 610, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 619, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 627, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 636, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 644, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 653, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 661, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 670, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 678, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 687, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 695, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 704, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 712, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 721, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 729, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 738, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 746, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 755, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 763, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 772, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 780, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 790, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 5, 64, 855, 8, 64, 10, 64, 12, 64, 858, 9, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 887, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 909, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 938, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 962, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 971, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 982, 8, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 997, 8, 73, 1, 73, 3, 73, 1000, 8, 73, 1, 73, 3, 73, 1003, 8, 73, 1, 73, 3, 73, 1006, 8, 73, 1, 73, 3, 73, 1009, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1015, 8, 73, 1, 73, 3, 73, 1018, 8, 73, 1, 73, 3, 73, 1021, 8, 73, 1, 73, 3, 73, 1024, 8, 73, 1, 73, 3, 73, 1027, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1034, 8, 73, 1, 73, 3, 73, 1037, 8, 73, 1, 73, 3, 73, 1040, 8, 73, 1, 73, 3, 73, 1043, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1051, 8, 73, 1, 73, 3, 73, 1054, 8, 73, 1, 73, 3, 73, 1057, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1066, 8, 73, 1, 73, 3, 73, 1069, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1079, 8, 73, 3, 73, 1081, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1113, 8, 77, 1, 78, 1, 78, 1, 78, 3, 78, 1118, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1125, 8, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 4, 88, 1149, 8, 88, 11, 88, 12, 88, 1150, 1, 88, 5, 88, 1154, 8, 88, 10, 88, 12, 88, 1157, 9, 88, 1, 88, 1, 88, 4, 88, 1161, 8, 88, 11, 88, 12, 88, 1162, 3, 88, 1165, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 5, 89, 1173, 8, 89, 10, 89, 12, 89, 1176, 9, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 5, 89, 1185, 8, 89, 10, 89, 12, 89, 1188, 9, 89, 1, 89, 3, 89, 1191, 8, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1245, 8, 96, 1, 97, 1, 97, 3, 97, 1249, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 5, 108, 1377, 8, 108, 10, 108, 12, 108, 1380, 9, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 3, 110, 1388, 8, 110, 1, 110, 1, 110, 5, 110, 1392, 8, 110, 10, 110, 12, 110, 1395, 9, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 0, 0, 113, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 0, 31, 0, 33, 0, 35, 0, 37, 0, 39, 0, 41, 0, 43, 15, 45, 0, 47, 16, 49, 17, 51, 0, 53, 0, 55, 0, 57, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 18, 111, 19, 113, 20, 115, 21, 117, 22, 119, 23, 121, 24, 123, 25, 125, 26, 127, 27, 129, 28, 131, 0, 133, 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 29, 145, 30, 147, 31, 149, 32, 151, 33, 153, 34, 155, 0, 157, 0, 159, 35, 161, 36, 163, 0, 165, 37, 167, 38, 169, 39, 171, 40, 173, 41, 175, 42, 177, 43, 179, 44, 181, 45, 183, 46, 185, 47, 187, 48, 189, 49, 191, 50, 193, 0, 195, 51, 197, 52, 199, 53, 201, 54, 203, 55, 205, 56, 207, 57, 209, 58, 211, 59, 213, 60, 215, 61, 217, 62, 219, 63, 221, 64, 223, 65, 225, 66, 1, 0, 38, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 9, 10, 12, 13, 32, 32, 5, 0, 10, 10, 12, 13, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 42, 42, 2, 0, 42, 42, 47, 47, 3, 0, 33, 33, 35, 38, 42, 126, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 3, 0, 85, 85, 117, 117, 124, 124, 1, 0, 0, 127, 1, 0, 48, 57, 4, 0, 10, 10, 12, 13, 34, 34, 92, 92, 4, 0, 10, 10, 12, 13, 39, 39, 92, 92, 1544, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 1, 227, 1, 0, 0, 0, 3, 229, 1, 0, 0, 0, 5, 231, 1, 0, 0, 0, 7, 233, 1, 0, 0, 0, 9, 235, 1, 0, 0, 0, 11, 237, 1, 0, 0, 0, 13, 239, 1, 0, 0, 0, 15, 241, 1, 0, 0, 0, 17, 243, 1, 0, 0, 0, 19, 245, 1, 0, 0, 0, 21, 247, 1, 0, 0, 0, 23, 249, 1, 0, 0, 0, 25, 251, 1, 0, 0, 0, 27, 253, 1, 0, 0, 0, 29, 255, 1, 0, 0, 0, 31, 257, 1, 0, 0, 0, 33, 263, 1, 0, 0, 0, 35, 265, 1, 0, 0, 0, 37, 287, 1, 0, 0, 0, 39, 292, 1, 0, 0, 0, 41, 297, 1, 0, 0, 0, 43, 299, 1, 0, 0, 0, 45, 333, 1, 0, 0, 0, 47, 337, 1, 0, 0, 0, 49, 354, 1, 0, 0, 0, 51, 360, 1, 0, 0, 0, 53, 366, 1, 0, 0, 0, 55, 369, 1, 0, 0, 0, 57, 391, 1, 0, 0, 0, 59, 404, 1, 0, 0, 0, 61, 417, 1, 0, 0, 0, 63, 430, 1, 0, 0, 0, 65, 443, 1, 0, 0, 0, 67, 456, 1, 0, 0, 0, 69, 473, 1, 0, 0, 0, 71, 490, 1, 0, 0, 0, 73, 507, 1, 0, 0, 0, 75, 524, 1, 0, 0, 0, 77, 541, 1, 0, 0, 0, 79, 558, 1, 0, 0, 0, 81, 575, 1, 0, 0, 0, 83, 592, 1, 0, 0, 0, 85, 609, 1, 0, 0, 0, 87, 626, 1, 0, 0, 0, 89, 643, 1, 0, 0, 0, 91, 660, 1, 0, 0, 0, 93, 677, 1, 0, 0, 0, 95, 694, 1, 0, 0, 0, 97, 711, 1, 0, 0, 0, 99, 728, 1, 0, 0, 0, 101, 745, 1, 0, 0, 0, 103, 762, 1, 0, 0, 0, 105, 779, 1, 0, 0, 0, 107, 789, 1, 0, 0, 0, 109, 791, 1, 0, 0, 0, 111, 796, 1, 0, 0, 0, 113, 800, 1, 0, 0, 0, 115, 803, 1, 0, 0, 0, 117, 806, 1, 0, 0, 0, 119, 809, 1, 0, 0, 0, 121, 817, 1, 0, 0, 0, 123, 823, 1, 0, 0, 0, 125, 830, 1, 0, 0, 0, 127, 841, 1, 0, 0, 0, 129, 851, 1, 0, 0, 0, 131, 886, 1, 0, 0, 0, 133, 908, 1, 0, 0, 0, 135, 937, 1, 0, 0, 0, 137, 961, 1, 0, 0, 0, 139, 970, 1, 0, 0, 0, 141, 981, 1, 0, 0, 0, 143, 983, 1, 0, 0, 0, 145, 986, 1, 0, 0, 0, 147, 1080, 1, 0, 0, 0, 149, 1082, 1, 0, 0, 0, 151, 1087, 1, 0, 0, 0, 153, 1091, 1, 0, 0, 0, 155, 1112, 1, 0, 0, 0, 157, 1117, 1, 0, 0, 0, 159, 1124, 1, 0, 0, 0, 161, 1126, 1, 0, 0, 0, 163, 1129, 1, 0, 0, 0, 165, 1131, 1, 0, 0, 0, 167, 1133, 1, 0, 0, 0, 169, 1135, 1, 0, 0, 0, 171, 1137, 1, 0, 0, 0, 173, 1139, 1, 0, 0, 0, 175, 1141, 1, 0, 0, 0, 177, 1164, 1, 0, 0, 0, 179, 1190, 1, 0, 0, 0, 181, 1192, 1, 0, 0, 0, 183, 1195, 1, 0, 0, 0, 185, 1198, 1, 0, 0, 0, 187, 1201, 1, 0, 0, 0, 189, 1212, 1, 0, 0, 0, 191, 1222, 1, 0, 0, 0, 193, 1244, 1, 0, 0, 0, 195, 1246, 1, 0, 0, 0, 197, 1260, 1, 0, 0, 0, 199, 1265, 1, 0, 0, 0, 201, 1268, 1, 0, 0, 0, 203, 1274, 1, 0, 0, 0, 205, 1279, 1, 0, 0, 0, 207, 1285, 1, 0, 0, 0, 209, 1295, 1, 0, 0, 0, 211, 1310, 1, 0, 0, 0, 213, 1331, 1, 0, 0, 0, 215, 1368, 1, 0, 0, 0, 217, 1371, 1, 0, 0, 0, 219, 1381, 1, 0, 0, 0, 221, 1387, 1, 0, 0, 0, 223, 1396, 1, 0, 0, 0, 225, 1399, 1, 0, 0, 0, 227, 228, 5, 91, 0, 0, 228, 2, 1, 0, 0, 0, 229, 230, 5, 93, 0, 0, 230, 4, 1, 0, 0, 0, 231, 232, 5, 40, 0, 0, 232, 6, 1, 0, 0, 0, 233, 234, 5, 41, 0, 0, 234, 8, 1, 0, 0, 0, 235, 236, 5, 123, 0, 0, 236, 10, 1, 0, 0, 0, 237, 238, 5, 125, 0, 0, 238, 12, 1, 0, 0, 0, 239, 240, 5, 59, 0, 0, 240, 14, 1, 0, 0, 0, 241, 242, 5, 61, 0, 0, 242, 16, 1, 0, 0, 0, 243, 244, 5, 58, 0, 0, 244, 18, 1, 0, 0, 0, 245, 246, 5, 46, 0, 0, 246, 20, 1, 0, 0, 0, 247, 248, 5, 42, 0, 0, 248, 22, 1, 0, 0, 0, 249, 250, 5, 47, 0, 0, 250, 24, 1, 0, 0, 0, 251, 252, 5, 124, 0, 0, 252, 26, 1, 0, 0, 0, 253, 254, 5, 95, 0, 0, 254, 28, 1, 0, 0, 0, 255, 256, 5, 64, 0, 0, 256, 30, 1, 0, 0, 0, 257, 258, 7, 0, 0, 0, 258, 32, 1, 0, 0, 0, 259, 260, 5, 13, 0, 0, 260, 264, 5, 10, 0, 0, 261, 264, 7, 1, 0, 0, 262, 264, 1, 0, 0, 0, 263, 259, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 263, 262, 1, 0, 0, 0, 264, 34, 1, 0, 0, 0, 265, 266, 5, 92, 0, 0, 266, 268, 3, 31, 15, 0, 267, 269, 3, 31, 15, 0, 268, 267, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 1, 0, 0, 0, 270, 272, 3, 31, 15, 0, 271, 270, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 1, 0, 0, 0, 273, 275, 3, 31, 15, 0, 274, 273, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 277, 1, 0, 0, 0, 276, 278, 3, 31, 15, 0, 277, 276, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 280, 1, 0, 0, 0, 279, 281, 3, 31, 15, 0, 280, 279, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 283, 3, 33, 16, 0, 283, 36, 1, 0, 0, 0, 284, 288, 3, 35, 17, 0, 285, 286, 5, 92, 0, 0, 286, 288, 8, 2, 0, 0, 287, 284, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 38, 1, 0, 0, 0, 289, 293, 7, 3, 0, 0, 290, 293, 3, 163, 81, 0, 291, 293, 3, 37, 18, 0, 292, 289, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 291, 1, 0, 0, 0, 293, 40, 1, 0, 0, 0, 294, 298, 7, 4, 0, 0, 295, 298, 3, 163, 81, 0, 296, 298, 3, 37, 18, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 297, 296, 1, 0, 0, 0, 298, 42, 1, 0, 0, 0, 299, 300, 5, 47, 0, 0, 300, 301, 5, 42, 0, 0, 301, 305, 1, 0, 0, 0, 302, 304, 8, 5, 0, 0, 303, 302, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 310, 5, 42, 0, 0, 309, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 327, 1, 0, 0, 0, 313, 317, 8, 6, 0, 0, 314, 316, 8, 5, 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 322, 5, 42, 0, 0, 321, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 313, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 330, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 331, 5, 47, 0, 0, 331, 44, 1, 0, 0, 0, 332, 334, 3, 41, 20, 0, 333, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 46, 1, 0, 0, 0, 337, 338, 3, 95, 47, 0, 338, 339, 3, 89, 44, 0, 339, 340, 3, 77, 38, 0, 340, 341, 5, 40, 0, 0, 341, 347, 3, 51, 25, 0, 342, 346, 7, 7, 0, 0, 343, 346, 3, 163, 81, 0, 344, 346, 3, 37, 18, 0, 345, 342, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 350, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 351, 3, 51, 25, 0, 351, 352, 5, 41, 0, 0, 352, 48, 1, 0, 0, 0, 353, 355, 7, 1, 0, 0, 354, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 50, 1, 0, 0, 0, 358, 361, 3, 49, 24, 0, 359, 361, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 359, 1, 0, 0, 0, 361, 52, 1, 0, 0, 0, 362, 367, 5, 10, 0, 0, 363, 364, 5, 13, 0, 0, 364, 367, 5, 10, 0, 0, 365, 367, 2, 12, 13, 0, 366, 362, 1, 0, 0, 0, 366, 363, 1, 0, 0, 0, 366, 365, 1, 0, 0, 0, 367, 54, 1, 0, 0, 0, 368, 370, 5, 48, 0, 0, 369, 368, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 372, 1, 0, 0, 0, 371, 373, 5, 48, 0, 0, 372, 371, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 375, 1, 0, 0, 0, 374, 376, 5, 48, 0, 0, 375, 374, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 379, 5, 48, 0, 0, 378, 377, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 56, 1, 0, 0, 0, 380, 392, 7, 8, 0, 0, 381, 382, 5, 92, 0, 0, 382, 387, 3, 55, 27, 0, 383, 384, 5, 52, 0, 0, 384, 388, 5, 49, 0, 0, 385, 386, 5, 54, 0, 0, 386, 388, 5, 49, 0, 0, 387, 383, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 3, 33, 16, 0, 390, 392, 1, 0, 0, 0, 391, 380, 1, 0, 0, 0, 391, 381, 1, 0, 0, 0, 392, 58, 1, 0, 0, 0, 393, 405, 7, 9, 0, 0, 394, 395, 5, 92, 0, 0, 395, 400, 3, 55, 27, 0, 396, 397, 5, 52, 0, 0, 397, 401, 5, 50, 0, 0, 398, 399, 5, 54, 0, 0, 399, 401, 5, 50, 0, 0, 400, 396, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 3, 33, 16, 0, 403, 405, 1, 0, 0, 0, 404, 393, 1, 0, 0, 0, 404, 394, 1, 0, 0, 0, 405, 60, 1, 0, 0, 0, 406, 418, 7, 10, 0, 0, 407, 408, 5, 92, 0, 0, 408, 413, 3, 55, 27, 0, 409, 410, 5, 52, 0, 0, 410, 414, 5, 51, 0, 0, 411, 412, 5, 54, 0, 0, 412, 414, 5, 51, 0, 0, 413, 409, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 416, 3, 33, 16, 0, 416, 418, 1, 0, 0, 0, 417, 406, 1, 0, 0, 0, 417, 407, 1, 0, 0, 0, 418, 62, 1, 0, 0, 0, 419, 431, 7, 11, 0, 0, 420, 421, 5, 92, 0, 0, 421, 426, 3, 55, 27, 0, 422, 423, 5, 52, 0, 0, 423, 427, 5, 52, 0, 0, 424, 425, 5, 54, 0, 0, 425, 427, 5, 52, 0, 0, 426, 422, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 3, 33, 16, 0, 429, 431, 1, 0, 0, 0, 430, 419, 1, 0, 0, 0, 430, 420, 1, 0, 0, 0, 431, 64, 1, 0, 0, 0, 432, 444, 7, 12, 0, 0, 433, 434, 5, 92, 0, 0, 434, 439, 3, 55, 27, 0, 435, 436, 5, 52, 0, 0, 436, 440, 5, 53, 0, 0, 437, 438, 5, 54, 0, 0, 438, 440, 5, 53, 0, 0, 439, 435, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 3, 33, 16, 0, 442, 444, 1, 0, 0, 0, 443, 432, 1, 0, 0, 0, 443, 433, 1, 0, 0, 0, 444, 66, 1, 0, 0, 0, 445, 457, 7, 13, 0, 0, 446, 447, 5, 92, 0, 0, 447, 452, 3, 55, 27, 0, 448, 449, 5, 52, 0, 0, 449, 453, 5, 54, 0, 0, 450, 451, 5, 54, 0, 0, 451, 453, 5, 54, 0, 0, 452, 448, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 455, 3, 33, 16, 0, 455, 457, 1, 0, 0, 0, 456, 445, 1, 0, 0, 0, 456, 446, 1, 0, 0, 0, 457, 68, 1, 0, 0, 0, 458, 474, 7, 14, 0, 0, 459, 460, 5, 92, 0, 0, 460, 465, 3, 55, 27, 0, 461, 462, 5, 52, 0, 0, 462, 466, 5, 55, 0, 0, 463, 464, 5, 54, 0, 0, 464, 466, 5, 55, 0, 0, 465, 461, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 3, 33, 16, 0, 468, 474, 1, 0, 0, 0, 469, 470, 5, 92, 0, 0, 470, 474, 5, 103, 0, 0, 471, 472, 5, 92, 0, 0, 472, 474, 5, 71, 0, 0, 473, 458, 1, 0, 0, 0, 473, 459, 1, 0, 0, 0, 473, 469, 1, 0, 0, 0, 473, 471, 1, 0, 0, 0, 474, 70, 1, 0, 0, 0, 475, 491, 7, 15, 0, 0, 476, 477, 5, 92, 0, 0, 477, 482, 3, 55, 27, 0, 478, 479, 5, 52, 0, 0, 479, 483, 5, 56, 0, 0, 480, 481, 5, 54, 0, 0, 481, 483, 5, 56, 0, 0, 482, 478, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 3, 33, 16, 0, 485, 491, 1, 0, 0, 0, 486, 487, 5, 92, 0, 0, 487, 491, 5, 104, 0, 0, 488, 489, 5, 92, 0, 0, 489, 491, 5, 72, 0, 0, 490, 475, 1, 0, 0, 0, 490, 476, 1, 0, 0, 0, 490, 486, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 491, 72, 1, 0, 0, 0, 492, 508, 7, 16, 0, 0, 493, 494, 5, 92, 0, 0, 494, 499, 3, 55, 27, 0, 495, 496, 5, 52, 0, 0, 496, 500, 5, 57, 0, 0, 497, 498, 5, 54, 0, 0, 498, 500, 5, 57, 0, 0, 499, 495, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 3, 33, 16, 0, 502, 508, 1, 0, 0, 0, 503, 504, 5, 92, 0, 0, 504, 508, 5, 105, 0, 0, 505, 506, 5, 92, 0, 0, 506, 508, 5, 73, 0, 0, 507, 492, 1, 0, 0, 0, 507, 493, 1, 0, 0, 0, 507, 503, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 508, 74, 1, 0, 0, 0, 509, 525, 7, 17, 0, 0, 510, 511, 5, 92, 0, 0, 511, 516, 3, 55, 27, 0, 512, 513, 5, 52, 0, 0, 513, 517, 5, 98, 0, 0, 514, 515, 5, 54, 0, 0, 515, 517, 5, 98, 0, 0, 516, 512, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 519, 3, 33, 16, 0, 519, 525, 1, 0, 0, 0, 520, 521, 5, 92, 0, 0, 521, 525, 5, 107, 0, 0, 522, 523, 5, 92, 0, 0, 523, 525, 5, 75, 0, 0, 524, 509, 1, 0, 0, 0, 524, 510, 1, 0, 0, 0, 524, 520, 1, 0, 0, 0, 524, 522, 1, 0, 0, 0, 525, 76, 1, 0, 0, 0, 526, 542, 7, 18, 0, 0, 527, 528, 5, 92, 0, 0, 528, 533, 3, 55, 27, 0, 529, 530, 5, 52, 0, 0, 530, 534, 5, 99, 0, 0, 531, 532, 5, 54, 0, 0, 532, 534, 5, 99, 0, 0, 533, 529, 1, 0, 0, 0, 533, 531, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 3, 33, 16, 0, 536, 542, 1, 0, 0, 0, 537, 538, 5, 92, 0, 0, 538, 542, 5, 108, 0, 0, 539, 540, 5, 92, 0, 0, 540, 542, 5, 76, 0, 0, 541, 526, 1, 0, 0, 0, 541, 527, 1, 0, 0, 0, 541, 537, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 78, 1, 0, 0, 0, 543, 559, 7, 19, 0, 0, 544, 545, 5, 92, 0, 0, 545, 550, 3, 55, 27, 0, 546, 547, 5, 52, 0, 0, 547, 551, 5, 100, 0, 0, 548, 549, 5, 54, 0, 0, 549, 551, 5, 100, 0, 0, 550, 546, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 3, 33, 16, 0, 553, 559, 1, 0, 0, 0, 554, 555, 5, 92, 0, 0, 555, 559, 5, 109, 0, 0, 556, 557, 5, 92, 0, 0, 557, 559, 5, 77, 0, 0, 558, 543, 1, 0, 0, 0, 558, 544, 1, 0, 0, 0, 558, 554, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 559, 80, 1, 0, 0, 0, 560, 576, 7, 20, 0, 0, 561, 562, 5, 92, 0, 0, 562, 567, 3, 55, 27, 0, 563, 564, 5, 52, 0, 0, 564, 568, 5, 101, 0, 0, 565, 566, 5, 54, 0, 0, 566, 568, 5, 101, 0, 0, 567, 563, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 3, 33, 16, 0, 570, 576, 1, 0, 0, 0, 571, 572, 5, 92, 0, 0, 572, 576, 5, 110, 0, 0, 573, 574, 5, 92, 0, 0, 574, 576, 5, 78, 0, 0, 575, 560, 1, 0, 0, 0, 575, 561, 1, 0, 0, 0, 575, 571, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 576, 82, 1, 0, 0, 0, 577, 593, 7, 21, 0, 0, 578, 579, 5, 92, 0, 0, 579, 584, 3, 55, 27, 0, 580, 581, 5, 52, 0, 0, 581, 585, 5, 102, 0, 0, 582, 583, 5, 54, 0, 0, 583, 585, 5, 102, 0, 0, 584, 580, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 3, 33, 16, 0, 587, 593, 1, 0, 0, 0, 588, 589, 5, 92, 0, 0, 589, 593, 5, 111, 0, 0, 590, 591, 5, 92, 0, 0, 591, 593, 5, 79, 0, 0, 592, 577, 1, 0, 0, 0, 592, 578, 1, 0, 0, 0, 592, 588, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 593, 84, 1, 0, 0, 0, 594, 610, 7, 22, 0, 0, 595, 596, 5, 92, 0, 0, 596, 601, 3, 55, 27, 0, 597, 598, 5, 53, 0, 0, 598, 602, 5, 48, 0, 0, 599, 600, 5, 55, 0, 0, 600, 602, 5, 48, 0, 0, 601, 597, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 604, 3, 33, 16, 0, 604, 610, 1, 0, 0, 0, 605, 606, 5, 92, 0, 0, 606, 610, 5, 112, 0, 0, 607, 608, 5, 92, 0, 0, 608, 610, 5, 80, 0, 0, 609, 594, 1, 0, 0, 0, 609, 595, 1, 0, 0, 0, 609, 605, 1, 0, 0, 0, 609, 607, 1, 0, 0, 0, 610, 86, 1, 0, 0, 0, 611, 627, 7, 23, 0, 0, 612, 613, 5, 92, 0, 0, 613, 618, 3, 55, 27, 0, 614, 615, 5, 53, 0, 0, 615, 619, 5, 49, 0, 0, 616, 617, 5, 55, 0, 0, 617, 619, 5, 49, 0, 0, 618, 614, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 621, 3, 33, 16, 0, 621, 627, 1, 0, 0, 0, 622, 623, 5, 92, 0, 0, 623, 627, 5, 113, 0, 0, 624, 625, 5, 92, 0, 0, 625, 627, 5, 81, 0, 0, 626, 611, 1, 0, 0, 0, 626, 612, 1, 0, 0, 0, 626, 622, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 627, 88, 1, 0, 0, 0, 628, 644, 7, 24, 0, 0, 629, 630, 5, 92, 0, 0, 630, 635, 3, 55, 27, 0, 631, 632, 5, 53, 0, 0, 632, 636, 5, 50, 0, 0, 633, 634, 5, 55, 0, 0, 634, 636, 5, 50, 0, 0, 635, 631, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 638, 3, 33, 16, 0, 638, 644, 1, 0, 0, 0, 639, 640, 5, 92, 0, 0, 640, 644, 5, 114, 0, 0, 641, 642, 5, 92, 0, 0, 642, 644, 5, 82, 0, 0, 643, 628, 1, 0, 0, 0, 643, 629, 1, 0, 0, 0, 643, 639, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 644, 90, 1, 0, 0, 0, 645, 661, 7, 25, 0, 0, 646, 647, 5, 92, 0, 0, 647, 652, 3, 55, 27, 0, 648, 649, 5, 53, 0, 0, 649, 653, 5, 51, 0, 0, 650, 651, 5, 55, 0, 0, 651, 653, 5, 51, 0, 0, 652, 648, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 3, 33, 16, 0, 655, 661, 1, 0, 0, 0, 656, 657, 5, 92, 0, 0, 657, 661, 5, 115, 0, 0, 658, 659, 5, 92, 0, 0, 659, 661, 5, 83, 0, 0, 660, 645, 1, 0, 0, 0, 660, 646, 1, 0, 0, 0, 660, 656, 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 661, 92, 1, 0, 0, 0, 662, 678, 7, 26, 0, 0, 663, 664, 5, 92, 0, 0, 664, 669, 3, 55, 27, 0, 665, 666, 5, 53, 0, 0, 666, 670, 5, 52, 0, 0, 667, 668, 5, 55, 0, 0, 668, 670, 5, 52, 0, 0, 669, 665, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, 3, 33, 16, 0, 672, 678, 1, 0, 0, 0, 673, 674, 5, 92, 0, 0, 674, 678, 5, 116, 0, 0, 675, 676, 5, 92, 0, 0, 676, 678, 5, 84, 0, 0, 677, 662, 1, 0, 0, 0, 677, 663, 1, 0, 0, 0, 677, 673, 1, 0, 0, 0, 677, 675, 1, 0, 0, 0, 678, 94, 1, 0, 0, 0, 679, 695, 7, 27, 0, 0, 680, 681, 5, 92, 0, 0, 681, 686, 3, 55, 27, 0, 682, 683, 5, 53, 0, 0, 683, 687, 5, 53, 0, 0, 684, 685, 5, 55, 0, 0, 685, 687, 5, 53, 0, 0, 686, 682, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 3, 33, 16, 0, 689, 695, 1, 0, 0, 0, 690, 691, 5, 92, 0, 0, 691, 695, 5, 117, 0, 0, 692, 693, 5, 92, 0, 0, 693, 695, 5, 85, 0, 0, 694, 679, 1, 0, 0, 0, 694, 680, 1, 0, 0, 0, 694, 690, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 96, 1, 0, 0, 0, 696, 712, 7, 28, 0, 0, 697, 698, 5, 92, 0, 0, 698, 703, 3, 55, 27, 0, 699, 700, 5, 53, 0, 0, 700, 704, 5, 54, 0, 0, 701, 702, 5, 55, 0, 0, 702, 704, 5, 54, 0, 0, 703, 699, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 706, 3, 33, 16, 0, 706, 712, 1, 0, 0, 0, 707, 708, 5, 92, 0, 0, 708, 712, 5, 118, 0, 0, 709, 710, 5, 92, 0, 0, 710, 712, 5, 86, 0, 0, 711, 696, 1, 0, 0, 0, 711, 697, 1, 0, 0, 0, 711, 707, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 712, 98, 1, 0, 0, 0, 713, 729, 7, 29, 0, 0, 714, 715, 5, 92, 0, 0, 715, 720, 3, 55, 27, 0, 716, 717, 5, 53, 0, 0, 717, 721, 5, 55, 0, 0, 718, 719, 5, 55, 0, 0, 719, 721, 5, 55, 0, 0, 720, 716, 1, 0, 0, 0, 720, 718, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 723, 3, 33, 16, 0, 723, 729, 1, 0, 0, 0, 724, 725, 5, 92, 0, 0, 725, 729, 5, 119, 0, 0, 726, 727, 5, 92, 0, 0, 727, 729, 5, 87, 0, 0, 728, 713, 1, 0, 0, 0, 728, 714, 1, 0, 0, 0, 728, 724, 1, 0, 0, 0, 728, 726, 1, 0, 0, 0, 729, 100, 1, 0, 0, 0, 730, 746, 7, 30, 0, 0, 731, 732, 5, 92, 0, 0, 732, 737, 3, 55, 27, 0, 733, 734, 5, 53, 0, 0, 734, 738, 5, 56, 0, 0, 735, 736, 5, 55, 0, 0, 736, 738, 5, 56, 0, 0, 737, 733, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 740, 3, 33, 16, 0, 740, 746, 1, 0, 0, 0, 741, 742, 5, 92, 0, 0, 742, 746, 5, 120, 0, 0, 743, 744, 5, 92, 0, 0, 744, 746, 5, 88, 0, 0, 745, 730, 1, 0, 0, 0, 745, 731, 1, 0, 0, 0, 745, 741, 1, 0, 0, 0, 745, 743, 1, 0, 0, 0, 746, 102, 1, 0, 0, 0, 747, 763, 7, 31, 0, 0, 748, 749, 5, 92, 0, 0, 749, 754, 3, 55, 27, 0, 750, 751, 5, 53, 0, 0, 751, 755, 5, 57, 0, 0, 752, 753, 5, 55, 0, 0, 753, 755, 5, 57, 0, 0, 754, 750, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 757, 3, 33, 16, 0, 757, 763, 1, 0, 0, 0, 758, 759, 5, 92, 0, 0, 759, 763, 5, 121, 0, 0, 760, 761, 5, 92, 0, 0, 761, 763, 5, 89, 0, 0, 762, 747, 1, 0, 0, 0, 762, 748, 1, 0, 0, 0, 762, 758, 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 104, 1, 0, 0, 0, 764, 780, 7, 32, 0, 0, 765, 766, 5, 92, 0, 0, 766, 771, 3, 55, 27, 0, 767, 768, 5, 53, 0, 0, 768, 772, 5, 97, 0, 0, 769, 770, 5, 55, 0, 0, 770, 772, 5, 97, 0, 0, 771, 767, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 774, 3, 33, 16, 0, 774, 780, 1, 0, 0, 0, 775, 776, 5, 92, 0, 0, 776, 780, 5, 122, 0, 0, 777, 778, 5, 92, 0, 0, 778, 780, 5, 90, 0, 0, 779, 764, 1, 0, 0, 0, 779, 765, 1, 0, 0, 0, 779, 775, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 780, 106, 1, 0, 0, 0, 781, 790, 5, 45, 0, 0, 782, 783, 5, 92, 0, 0, 783, 784, 3, 55, 27, 0, 784, 785, 5, 50, 0, 0, 785, 786, 5, 100, 0, 0, 786, 787, 1, 0, 0, 0, 787, 788, 3, 33, 16, 0, 788, 790, 1, 0, 0, 0, 789, 781, 1, 0, 0, 0, 789, 782, 1, 0, 0, 0, 790, 108, 1, 0, 0, 0, 791, 792, 5, 60, 0, 0, 792, 793, 5, 33, 0, 0, 793, 794, 5, 45, 0, 0, 794, 795, 5, 45, 0, 0, 795, 110, 1, 0, 0, 0, 796, 797, 5, 45, 0, 0, 797, 798, 5, 45, 0, 0, 798, 799, 5, 62, 0, 0, 799, 112, 1, 0, 0, 0, 800, 801, 5, 126, 0, 0, 801, 802, 5, 61, 0, 0, 802, 114, 1, 0, 0, 0, 803, 804, 5, 124, 0, 0, 804, 805, 5, 61, 0, 0, 805, 116, 1, 0, 0, 0, 806, 807, 5, 35, 0, 0, 807, 808, 3, 45, 22, 0, 808, 118, 1, 0, 0, 0, 809, 810, 3, 29, 14, 0, 810, 811, 3, 73, 36, 0, 811, 812, 3, 79, 39, 0, 812, 813, 3, 85, 42, 0, 813, 814, 3, 83, 41, 0, 814, 815, 3, 89, 44, 0, 815, 816, 3, 93, 46, 0, 816, 120, 1, 0, 0, 0, 817, 818, 3, 29, 14, 0, 818, 819, 3, 85, 42, 0, 819, 820, 3, 57, 28, 0, 820, 821, 3, 69, 34, 0, 821, 822, 3, 65, 32, 0, 822, 122, 1, 0, 0, 0, 823, 824, 3, 29, 14, 0, 824, 825, 3, 79, 39, 0, 825, 826, 3, 65, 32, 0, 826, 827, 3, 63, 31, 0, 827, 828, 3, 73, 36, 0, 828, 829, 3, 57, 28, 0, 829, 124, 1, 0, 0, 0, 830, 831, 3, 29, 14, 0, 831, 832, 3, 81, 40, 0, 832, 833, 3, 57, 28, 0, 833, 834, 3, 79, 39, 0, 834, 835, 3, 65, 32, 0, 835, 836, 3, 91, 45, 0, 836, 837, 3, 85, 42, 0, 837, 838, 3, 57, 28, 0, 838, 839, 3, 61, 30, 0, 839, 840, 3, 65, 32, 0, 840, 126, 1, 0, 0, 0, 841, 842, 5, 64, 0, 0, 842, 843, 5, 99, 0, 0, 843, 844, 5, 104, 0, 0, 844, 845, 5, 97, 0, 0, 845, 846, 5, 114, 0, 0, 846, 847, 5, 115, 0, 0, 847, 848, 5, 101, 0, 0, 848, 849, 5, 116, 0, 0, 849, 850, 5, 32, 0, 0, 850, 128, 1, 0, 0, 0, 851, 856, 5, 33, 0, 0, 852, 855, 3, 49, 24, 0, 853, 855, 3, 43, 21, 0, 854, 852, 1, 0, 0, 0, 854, 853, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 859, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 859, 860, 3, 73, 36, 0, 860, 861, 3, 79, 39, 0, 861, 862, 3, 85, 42, 0, 862, 863, 3, 83, 41, 0, 863, 864, 3, 89, 44, 0, 864, 865, 3, 93, 46, 0, 865, 866, 3, 57, 28, 0, 866, 867, 3, 81, 40, 0, 867, 868, 3, 93, 46, 0, 868, 130, 1, 0, 0, 0, 869, 870, 3, 177, 88, 0, 870, 871, 3, 65, 32, 0, 871, 872, 3, 79, 39, 0, 872, 887, 1, 0, 0, 0, 873, 874, 3, 177, 88, 0, 874, 875, 3, 65, 32, 0, 875, 876, 3, 101, 50, 0, 876, 887, 1, 0, 0, 0, 877, 878, 3, 177, 88, 0, 878, 879, 3, 61, 30, 0, 879, 880, 3, 71, 35, 0, 880, 887, 1, 0, 0, 0, 881, 882, 3, 177, 88, 0, 882, 883, 3, 89, 44, 0, 883, 884, 3, 65, 32, 0, 884, 885, 3, 79, 39, 0, 885, 887, 1, 0, 0, 0, 886, 869, 1, 0, 0, 0, 886, 873, 1, 0, 0, 0, 886, 877, 1, 0, 0, 0, 886, 881, 1, 0, 0, 0, 887, 132, 1, 0, 0, 0, 888, 889, 3, 177, 88, 0, 889, 890, 3, 97, 48, 0, 890, 891, 3, 99, 49, 0, 891, 909, 1, 0, 0, 0, 892, 893, 3, 177, 88, 0, 893, 894, 3, 97, 48, 0, 894, 895, 3, 71, 35, 0, 895, 909, 1, 0, 0, 0, 896, 897, 3, 177, 88, 0, 897, 898, 3, 97, 48, 0, 898, 899, 3, 79, 39, 0, 899, 900, 3, 73, 36, 0, 900, 901, 3, 81, 40, 0, 901, 909, 1, 0, 0, 0, 902, 903, 3, 177, 88, 0, 903, 904, 3, 97, 48, 0, 904, 905, 3, 79, 39, 0, 905, 906, 3, 57, 28, 0, 906, 907, 3, 101, 50, 0, 907, 909, 1, 0, 0, 0, 908, 888, 1, 0, 0, 0, 908, 892, 1, 0, 0, 0, 908, 896, 1, 0, 0, 0, 908, 902, 1, 0, 0, 0, 909, 134, 1, 0, 0, 0, 910, 911, 3, 177, 88, 0, 911, 912, 3, 85, 42, 0, 912, 913, 3, 101, 50, 0, 913, 938, 1, 0, 0, 0, 914, 915, 3, 177, 88, 0, 915, 916, 3, 61, 30, 0, 916, 917, 3, 79, 39, 0, 917, 938, 1, 0, 0, 0, 918, 919, 3, 177, 88, 0, 919, 920, 3, 79, 39, 0, 920, 921, 3, 79, 39, 0, 921, 938, 1, 0, 0, 0, 922, 923, 3, 177, 88, 0, 923, 924, 3, 73, 36, 0, 924, 925, 3, 81, 40, 0, 925, 938, 1, 0, 0, 0, 926, 927, 3, 177, 88, 0, 927, 928, 3, 85, 42, 0, 928, 929, 3, 93, 46, 0, 929, 938, 1, 0, 0, 0, 930, 931, 3, 177, 88, 0, 931, 932, 3, 85, 42, 0, 932, 933, 3, 61, 30, 0, 933, 938, 1, 0, 0, 0, 934, 935, 3, 177, 88, 0, 935, 936, 3, 87, 43, 0, 936, 938, 1, 0, 0, 0, 937, 910, 1, 0, 0, 0, 937, 914, 1, 0, 0, 0, 937, 918, 1, 0, 0, 0, 937, 922, 1, 0, 0, 0, 937, 926, 1, 0, 0, 0, 937, 930, 1, 0, 0, 0, 937, 934, 1, 0, 0, 0, 938, 136, 1, 0, 0, 0, 939, 940, 3, 177, 88, 0, 940, 941, 3, 63, 31, 0, 941, 942, 3, 65, 32, 0, 942, 943, 3, 69, 34, 0, 943, 962, 1, 0, 0, 0, 944, 945, 3, 177, 88, 0, 945, 946, 3, 89, 44, 0, 946, 947, 3, 57, 28, 0, 947, 948, 3, 63, 31, 0, 948, 962, 1, 0, 0, 0, 949, 950, 3, 177, 88, 0, 950, 951, 3, 69, 34, 0, 951, 952, 3, 89, 44, 0, 952, 953, 3, 57, 28, 0, 953, 954, 3, 63, 31, 0, 954, 962, 1, 0, 0, 0, 955, 956, 3, 177, 88, 0, 956, 957, 3, 93, 46, 0, 957, 958, 3, 95, 47, 0, 958, 959, 3, 89, 44, 0, 959, 960, 3, 81, 40, 0, 960, 962, 1, 0, 0, 0, 961, 939, 1, 0, 0, 0, 961, 944, 1, 0, 0, 0, 961, 949, 1, 0, 0, 0, 961, 955, 1, 0, 0, 0, 962, 138, 1, 0, 0, 0, 963, 964, 3, 177, 88, 0, 964, 965, 3, 79, 39, 0, 965, 966, 3, 91, 45, 0, 966, 971, 1, 0, 0, 0, 967, 968, 3, 177, 88, 0, 968, 969, 3, 91, 45, 0, 969, 971, 1, 0, 0, 0, 970, 963, 1, 0, 0, 0, 970, 967, 1, 0, 0, 0, 971, 140, 1, 0, 0, 0, 972, 973, 3, 177, 88, 0, 973, 974, 3, 71, 35, 0, 974, 975, 3, 105, 52, 0, 975, 982, 1, 0, 0, 0, 976, 977, 3, 177, 88, 0, 977, 978, 3, 75, 37, 0, 978, 979, 3, 71, 35, 0, 979, 980, 3, 105, 52, 0, 980, 982, 1, 0, 0, 0, 981, 972, 1, 0, 0, 0, 981, 976, 1, 0, 0, 0, 982, 142, 1, 0, 0, 0, 983, 984, 3, 177, 88, 0, 984, 985, 5, 37, 0, 0, 985, 144, 1, 0, 0, 0, 986, 987, 5, 117, 0, 0, 987, 988, 5, 114, 0, 0, 988, 989, 5, 108, 0, 0, 989, 990, 5, 40, 0, 0, 990, 146, 1, 0, 0, 0, 991, 992, 7, 33, 0, 0, 992, 993, 5, 43, 0, 0, 993, 994, 5, 63, 0, 0, 994, 996, 1, 0, 0, 0, 995, 997, 5, 63, 0, 0, 996, 995, 1, 0, 0, 0, 996, 997, 1, 0, 0, 0, 997, 999, 1, 0, 0, 0, 998, 1000, 5, 63, 0, 0, 999, 998, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 1002, 1, 0, 0, 0, 1001, 1003, 5, 63, 0, 0, 1002, 1001, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1005, 1, 0, 0, 0, 1004, 1006, 5, 63, 0, 0, 1005, 1004, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1008, 1, 0, 0, 0, 1007, 1009, 5, 63, 0, 0, 1008, 1007, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1081, 1, 0, 0, 0, 1010, 1011, 7, 33, 0, 0, 1011, 1012, 5, 43, 0, 0, 1012, 1014, 3, 31, 15, 0, 1013, 1015, 5, 63, 0, 0, 1014, 1013, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1017, 1, 0, 0, 0, 1016, 1018, 5, 63, 0, 0, 1017, 1016, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1020, 1, 0, 0, 0, 1019, 1021, 5, 63, 0, 0, 1020, 1019, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1023, 1, 0, 0, 0, 1022, 1024, 5, 63, 0, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1027, 5, 63, 0, 0, 1026, 1025, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1081, 1, 0, 0, 0, 1028, 1029, 7, 33, 0, 0, 1029, 1030, 5, 43, 0, 0, 1030, 1031, 3, 31, 15, 0, 1031, 1033, 3, 31, 15, 0, 1032, 1034, 5, 63, 0, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1036, 1, 0, 0, 0, 1035, 1037, 5, 63, 0, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1039, 1, 0, 0, 0, 1038, 1040, 5, 63, 0, 0, 1039, 1038, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1043, 5, 63, 0, 0, 1042, 1041, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1081, 1, 0, 0, 0, 1044, 1045, 7, 33, 0, 0, 1045, 1046, 5, 43, 0, 0, 1046, 1047, 3, 31, 15, 0, 1047, 1048, 3, 31, 15, 0, 1048, 1050, 3, 31, 15, 0, 1049, 1051, 5, 63, 0, 0, 1050, 1049, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1053, 1, 0, 0, 0, 1052, 1054, 5, 63, 0, 0, 1053, 1052, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1057, 5, 63, 0, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1081, 1, 0, 0, 0, 1058, 1059, 7, 33, 0, 0, 1059, 1060, 5, 43, 0, 0, 1060, 1061, 3, 31, 15, 0, 1061, 1062, 3, 31, 15, 0, 1062, 1063, 3, 31, 15, 0, 1063, 1065, 3, 31, 15, 0, 1064, 1066, 5, 63, 0, 0, 1065, 1064, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1068, 1, 0, 0, 0, 1067, 1069, 5, 63, 0, 0, 1068, 1067, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1081, 1, 0, 0, 0, 1070, 1071, 7, 33, 0, 0, 1071, 1072, 5, 43, 0, 0, 1072, 1073, 3, 31, 15, 0, 1073, 1074, 3, 31, 15, 0, 1074, 1075, 3, 31, 15, 0, 1075, 1076, 3, 31, 15, 0, 1076, 1078, 3, 31, 15, 0, 1077, 1079, 5, 63, 0, 0, 1078, 1077, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1081, 1, 0, 0, 0, 1080, 991, 1, 0, 0, 0, 1080, 1010, 1, 0, 0, 0, 1080, 1028, 1, 0, 0, 0, 1080, 1044, 1, 0, 0, 0, 1080, 1058, 1, 0, 0, 0, 1080, 1070, 1, 0, 0, 0, 1081, 148, 1, 0, 0, 0, 1082, 1083, 3, 83, 41, 0, 1083, 1084, 3, 81, 40, 0, 1084, 1085, 3, 77, 38, 0, 1085, 1086, 3, 103, 51, 0, 1086, 150, 1, 0, 0, 0, 1087, 1088, 3, 81, 40, 0, 1088, 1089, 3, 83, 41, 0, 1089, 1090, 3, 93, 46, 0, 1090, 152, 1, 0, 0, 0, 1091, 1092, 3, 57, 28, 0, 1092, 1093, 3, 81, 40, 0, 1093, 1094, 3, 63, 31, 0, 1094, 154, 1, 0, 0, 0, 1095, 1096, 3, 177, 88, 0, 1096, 1097, 3, 63, 31, 0, 1097, 1098, 3, 85, 42, 0, 1098, 1099, 3, 73, 36, 0, 1099, 1113, 1, 0, 0, 0, 1100, 1101, 3, 177, 88, 0, 1101, 1102, 3, 63, 31, 0, 1102, 1103, 3, 85, 42, 0, 1103, 1104, 3, 61, 30, 0, 1104, 1105, 3, 79, 39, 0, 1105, 1113, 1, 0, 0, 0, 1106, 1107, 3, 177, 88, 0, 1107, 1108, 3, 63, 31, 0, 1108, 1109, 3, 85, 42, 0, 1109, 1110, 3, 85, 42, 0, 1110, 1111, 3, 101, 50, 0, 1111, 1113, 1, 0, 0, 0, 1112, 1095, 1, 0, 0, 0, 1112, 1100, 1, 0, 0, 0, 1112, 1106, 1, 0, 0, 0, 1113, 156, 1, 0, 0, 0, 1114, 1118, 3, 135, 67, 0, 1115, 1118, 3, 131, 65, 0, 1116, 1118, 3, 133, 66, 0, 1117, 1114, 1, 0, 0, 0, 1117, 1115, 1, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 158, 1, 0, 0, 0, 1119, 1125, 3, 157, 78, 0, 1120, 1125, 3, 139, 69, 0, 1121, 1125, 3, 141, 70, 0, 1122, 1125, 3, 155, 77, 0, 1123, 1125, 3, 137, 68, 0, 1124, 1119, 1, 0, 0, 0, 1124, 1120, 1, 0, 0, 0, 1124, 1121, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, 0, 1124, 1123, 1, 0, 0, 0, 1125, 160, 1, 0, 0, 0, 1126, 1127, 3, 177, 88, 0, 1127, 1128, 3, 221, 110, 0, 1128, 162, 1, 0, 0, 0, 1129, 1130, 8, 34, 0, 0, 1130, 164, 1, 0, 0, 0, 1131, 1132, 5, 43, 0, 0, 1132, 166, 1, 0, 0, 0, 1133, 1134, 5, 45, 0, 0, 1134, 168, 1, 0, 0, 0, 1135, 1136, 5, 62, 0, 0, 1136, 170, 1, 0, 0, 0, 1137, 1138, 5, 44, 0, 0, 1138, 172, 1, 0, 0, 0, 1139, 1140, 5, 126, 0, 0, 1140, 174, 1, 0, 0, 0, 1141, 1142, 5, 58, 0, 0, 1142, 1143, 3, 81, 40, 0, 1143, 1144, 3, 83, 41, 0, 1144, 1145, 3, 93, 46, 0, 1145, 1146, 5, 40, 0, 0, 1146, 176, 1, 0, 0, 0, 1147, 1149, 7, 35, 0, 0, 1148, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1165, 1, 0, 0, 0, 1152, 1154, 7, 35, 0, 0, 1153, 1152, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1160, 5, 46, 0, 0, 1159, 1161, 7, 35, 0, 0, 1160, 1159, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1165, 1, 0, 0, 0, 1164, 1148, 1, 0, 0, 0, 1164, 1155, 1, 0, 0, 0, 1165, 178, 1, 0, 0, 0, 1166, 1174, 5, 34, 0, 0, 1167, 1173, 8, 36, 0, 0, 1168, 1169, 5, 92, 0, 0, 1169, 1173, 3, 53, 26, 0, 1170, 1173, 3, 163, 81, 0, 1171, 1173, 3, 37, 18, 0, 1172, 1167, 1, 0, 0, 0, 1172, 1168, 1, 0, 0, 0, 1172, 1170, 1, 0, 0, 0, 1172, 1171, 1, 0, 0, 0, 1173, 1176, 1, 0, 0, 0, 1174, 1172, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1177, 1191, 5, 34, 0, 0, 1178, 1186, 5, 39, 0, 0, 1179, 1185, 8, 37, 0, 0, 1180, 1181, 5, 92, 0, 0, 1181, 1185, 3, 53, 26, 0, 1182, 1185, 3, 163, 81, 0, 1183, 1185, 3, 37, 18, 0, 1184, 1179, 1, 0, 0, 0, 1184, 1180, 1, 0, 0, 0, 1184, 1182, 1, 0, 0, 0, 1184, 1183, 1, 0, 0, 0, 1185, 1188, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1189, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, 1191, 5, 39, 0, 0, 1190, 1166, 1, 0, 0, 0, 1190, 1178, 1, 0, 0, 0, 1191, 180, 1, 0, 0, 0, 1192, 1193, 5, 94, 0, 0, 1193, 1194, 5, 61, 0, 0, 1194, 182, 1, 0, 0, 0, 1195, 1196, 5, 36, 0, 0, 1196, 1197, 5, 61, 0, 0, 1197, 184, 1, 0, 0, 0, 1198, 1199, 5, 42, 0, 0, 1199, 1200, 5, 61, 0, 0, 1200, 186, 1, 0, 0, 0, 1201, 1202, 3, 29, 14, 0, 1202, 1203, 3, 67, 33, 0, 1203, 1204, 3, 83, 41, 0, 1204, 1205, 3, 81, 40, 0, 1205, 1206, 3, 93, 46, 0, 1206, 1207, 3, 107, 53, 0, 1207, 1208, 3, 67, 33, 0, 1208, 1209, 3, 57, 28, 0, 1209, 1210, 3, 61, 30, 0, 1210, 1211, 3, 65, 32, 0, 1211, 188, 1, 0, 0, 0, 1212, 1213, 3, 29, 14, 0, 1213, 1214, 3, 91, 45, 0, 1214, 1215, 3, 95, 47, 0, 1215, 1216, 3, 85, 42, 0, 1216, 1217, 3, 85, 42, 0, 1217, 1218, 3, 83, 41, 0, 1218, 1219, 3, 89, 44, 0, 1219, 1220, 3, 93, 46, 0, 1220, 1221, 3, 91, 45, 0, 1221, 190, 1, 0, 0, 0, 1222, 1223, 3, 83, 41, 0, 1223, 1224, 3, 89, 44, 0, 1224, 192, 1, 0, 0, 0, 1225, 1226, 5, 45, 0, 0, 1226, 1227, 3, 79, 39, 0, 1227, 1228, 3, 83, 41, 0, 1228, 1229, 3, 105, 52, 0, 1229, 1230, 5, 45, 0, 0, 1230, 1245, 1, 0, 0, 0, 1231, 1232, 5, 45, 0, 0, 1232, 1233, 3, 99, 49, 0, 1233, 1234, 3, 65, 32, 0, 1234, 1235, 3, 59, 29, 0, 1235, 1236, 3, 75, 37, 0, 1236, 1237, 3, 73, 36, 0, 1237, 1238, 3, 93, 46, 0, 1238, 1239, 5, 45, 0, 0, 1239, 1245, 1, 0, 0, 0, 1240, 1241, 5, 45, 0, 0, 1241, 1242, 3, 83, 41, 0, 1242, 1243, 5, 45, 0, 0, 1243, 1245, 1, 0, 0, 0, 1244, 1225, 1, 0, 0, 0, 1244, 1231, 1, 0, 0, 0, 1244, 1240, 1, 0, 0, 0, 1245, 194, 1, 0, 0, 0, 1246, 1248, 3, 29, 14, 0, 1247, 1249, 3, 193, 96, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 3, 75, 37, 0, 1251, 1252, 3, 65, 32, 0, 1252, 1253, 3, 103, 51, 0, 1253, 1254, 3, 67, 33, 0, 1254, 1255, 3, 89, 44, 0, 1255, 1256, 3, 57, 28, 0, 1256, 1257, 3, 79, 39, 0, 1257, 1258, 3, 65, 32, 0, 1258, 1259, 3, 91, 45, 0, 1259, 196, 1, 0, 0, 0, 1260, 1261, 3, 67, 33, 0, 1261, 1262, 3, 89, 44, 0, 1262, 1263, 3, 83, 41, 0, 1263, 1264, 3, 79, 39, 0, 1264, 198, 1, 0, 0, 0, 1265, 1266, 3, 93, 46, 0, 1266, 1267, 3, 83, 41, 0, 1267, 200, 1, 0, 0, 0, 1268, 1269, 5, 99, 0, 0, 1269, 1270, 5, 97, 0, 0, 1270, 1271, 5, 108, 0, 0, 1271, 1272, 5, 99, 0, 0, 1272, 1273, 5, 40, 0, 0, 1273, 202, 1, 0, 0, 0, 1274, 1275, 5, 114, 0, 0, 1275, 1276, 5, 103, 0, 0, 1276, 1277, 5, 98, 0, 0, 1277, 1278, 5, 40, 0, 0, 1278, 204, 1, 0, 0, 0, 1279, 1280, 5, 114, 0, 0, 1280, 1281, 5, 103, 0, 0, 1281, 1282, 5, 98, 0, 0, 1282, 1283, 5, 97, 0, 0, 1283, 1284, 5, 40, 0, 0, 1284, 206, 1, 0, 0, 0, 1285, 1286, 3, 29, 14, 0, 1286, 1287, 3, 97, 48, 0, 1287, 1288, 3, 73, 36, 0, 1288, 1289, 3, 65, 32, 0, 1289, 1290, 3, 99, 49, 0, 1290, 1291, 3, 85, 42, 0, 1291, 1292, 3, 83, 41, 0, 1292, 1293, 3, 89, 44, 0, 1293, 1294, 3, 93, 46, 0, 1294, 208, 1, 0, 0, 0, 1295, 1296, 3, 29, 14, 0, 1296, 1297, 3, 61, 30, 0, 1297, 1298, 3, 83, 41, 0, 1298, 1299, 3, 95, 47, 0, 1299, 1300, 3, 81, 40, 0, 1300, 1301, 3, 93, 46, 0, 1301, 1302, 3, 65, 32, 0, 1302, 1303, 3, 89, 44, 0, 1303, 1304, 3, 107, 53, 0, 1304, 1305, 3, 91, 45, 0, 1305, 1306, 3, 93, 46, 0, 1306, 1307, 3, 103, 51, 0, 1307, 1308, 3, 77, 38, 0, 1308, 1309, 3, 65, 32, 0, 1309, 210, 1, 0, 0, 0, 1310, 1311, 3, 29, 14, 0, 1311, 1312, 3, 67, 33, 0, 1312, 1313, 3, 83, 41, 0, 1313, 1314, 3, 81, 40, 0, 1314, 1315, 3, 93, 46, 0, 1315, 1316, 3, 107, 53, 0, 1316, 1317, 3, 67, 33, 0, 1317, 1318, 3, 65, 32, 0, 1318, 1319, 3, 57, 28, 0, 1319, 1320, 3, 93, 46, 0, 1320, 1321, 3, 95, 47, 0, 1321, 1322, 3, 89, 44, 0, 1322, 1323, 3, 65, 32, 0, 1323, 1324, 3, 107, 53, 0, 1324, 1325, 3, 97, 48, 0, 1325, 1326, 3, 57, 28, 0, 1326, 1327, 3, 77, 38, 0, 1327, 1328, 3, 95, 47, 0, 1328, 1329, 3, 65, 32, 0, 1329, 1330, 3, 91, 45, 0, 1330, 212, 1, 0, 0, 0, 1331, 1332, 5, 112, 0, 0, 1332, 1333, 5, 114, 0, 0, 1333, 1334, 5, 111, 0, 0, 1334, 1335, 5, 103, 0, 0, 1335, 1336, 5, 105, 0, 0, 1336, 1337, 5, 100, 0, 0, 1337, 1338, 5, 58, 0, 0, 1338, 1339, 5, 68, 0, 0, 1339, 1340, 5, 88, 0, 0, 1340, 1341, 5, 73, 0, 0, 1341, 1342, 5, 109, 0, 0, 1342, 1343, 5, 97, 0, 0, 1343, 1344, 5, 103, 0, 0, 1344, 1345, 5, 101, 0, 0, 1345, 1346, 5, 84, 0, 0, 1346, 1347, 5, 114, 0, 0, 1347, 1348, 5, 97, 0, 0, 1348, 1349, 5, 110, 0, 0, 1349, 1350, 5, 115, 0, 0, 1350, 1351, 5, 102, 0, 0, 1351, 1352, 5, 111, 0, 0, 1352, 1353, 5, 114, 0, 0, 1353, 1354, 5, 109, 0, 0, 1354, 1355, 5, 46, 0, 0, 1355, 1356, 5, 77, 0, 0, 1356, 1357, 5, 105, 0, 0, 1357, 1358, 5, 99, 0, 0, 1358, 1359, 5, 114, 0, 0, 1359, 1360, 5, 111, 0, 0, 1360, 1361, 5, 115, 0, 0, 1361, 1362, 5, 111, 0, 0, 1362, 1363, 5, 102, 0, 0, 1363, 1364, 5, 116, 0, 0, 1364, 1365, 5, 46, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 3, 223, 111, 0, 1367, 214, 1, 0, 0, 0, 1368, 1369, 3, 29, 14, 0, 1369, 1370, 3, 221, 110, 0, 1370, 216, 1, 0, 0, 0, 1371, 1372, 5, 45, 0, 0, 1372, 1373, 5, 45, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1378, 3, 39, 19, 0, 1375, 1377, 3, 41, 20, 0, 1376, 1375, 1, 0, 0, 0, 1377, 1380, 1, 0, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, 0, 1379, 218, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1381, 1382, 5, 118, 0, 0, 1382, 1383, 5, 97, 0, 0, 1383, 1384, 5, 114, 0, 0, 1384, 1385, 5, 40, 0, 0, 1385, 220, 1, 0, 0, 0, 1386, 1388, 5, 45, 0, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1393, 3, 39, 19, 0, 1390, 1392, 3, 41, 20, 0, 1391, 1390, 1, 0, 0, 0, 1392, 1395, 1, 0, 0, 0, 1393, 1391, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 222, 1, 0, 0, 0, 1395, 1393, 1, 0, 0, 0, 1396, 1397, 3, 221, 110, 0, 1397, 1398, 5, 40, 0, 0, 1398, 224, 1, 0, 0, 0, 1399, 1400, 9, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1402, 6, 112, 0, 0, 1402, 226, 1, 0, 0, 0, 122, 0, 263, 268, 271, 274, 277, 280, 287, 292, 297, 305, 311, 317, 323, 327, 335, 345, 347, 356, 360, 366, 369, 372, 375, 378, 387, 391, 400, 404, 413, 417, 426, 430, 439, 443, 452, 456, 465, 473, 482, 490, 499, 507, 516, 524, 533, 541, 550, 558, 567, 575, 584, 592, 601, 609, 618, 626, 635, 643, 652, 660, 669, 677, 686, 694, 703, 711, 720, 728, 737, 745, 754, 762, 771, 779, 789, 854, 856, 886, 908, 937, 961, 970, 981, 996, 999, 1002, 1005, 1008, 1014, 1017, 1020, 1023, 1026, 1033, 1036, 1039, 1042, 1050, 1053, 1056, 1065, 1068, 1078, 1080, 1112, 1117, 1124, 1150, 1155, 1162, 1164, 1172, 1174, 1184, 1186, 1190, 1244, 1248, 1378, 1387, 1393, 1, 0, 2, 0]
\ No newline at end of file
diff --git a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.tokens b/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.tokens
deleted file mode 100644
index fbcc31ef9..000000000
--- a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Lexer.tokens
+++ /dev/null
@@ -1,98 +0,0 @@
-OpenBracket=1
-CloseBracket=2
-OpenParen=3
-CloseParen=4
-OpenBrace=5
-CloseBrace=6
-SemiColon=7
-Equal=8
-Colon=9
-Dot=10
-Multiply=11
-Divide=12
-Pipe=13
-Underscore=14
-Comment=15
-Url=16
-Space=17
-Cdo=18
-Cdc=19
-Includes=20
-DashMatch=21
-Hash=22
-Import=23
-Page=24
-Media=25
-Namespace=26
-Charset=27
-Important=28
-Percentage=29
-Url_=30
-UnicodeRange=31
-MediaOnly=32
-Not=33
-And=34
-Dimension=35
-UnknownDimension=36
-Plus=37
-Minus=38
-Greater=39
-Comma=40
-Tilde=41
-PseudoNot=42
-Number=43
-String_=44
-PrefixMatch=45
-SuffixMatch=46
-SubstringMatch=47
-FontFace=48
-Supports=49
-Or=50
-Keyframes=51
-From=52
-To=53
-Calc=54
-Rgb=55
-Rgba=56
-Viewport=57
-CounterStyle=58
-FontFeatureValues=59
-DxImageTransform=60
-AtKeyword=61
-Variable=62
-Var=63
-Ident=64
-Function_=65
-UnexpectedCharacter=66
-'['=1
-']'=2
-'('=3
-')'=4
-'{'=5
-'}'=6
-';'=7
-'='=8
-':'=9
-'.'=10
-'*'=11
-'/'=12
-'|'=13
-'_'=14
-''=19
-'~='=20
-'|='=21
-'@charset '=27
-'url('=30
-'+'=37
-'-'=38
-'>'=39
-','=40
-'~'=41
-'^='=45
-'$='=46
-'*='=47
-'calc('=54
-'rgb('=55
-'rgba('=56
-'var('=63
diff --git a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.cpp b/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.cpp
deleted file mode 100644
index ce3624f97..000000000
--- a/Sources/SGCore/UI/ANTLR4CSS3Generated/css3Parser.cpp
+++ /dev/null
@@ -1,10920 +0,0 @@
-
-// Generated from /home/creastive/projects/sungear/SungearEngine/Externals/antlr4/css/css3Parser.g4 by ANTLR 4.13.1
-
-
-#include "css3ParserListener.h"
-#include "css3ParserVisitor.h"
-
-#include "css3Parser.h"
-
-
-using namespace antlrcpp;
-
-using namespace antlr4;
-
-namespace {
-
-struct Css3ParserStaticData final {
- Css3ParserStaticData(std::vector ruleNames,
- std::vector literalNames,
- std::vector symbolicNames)
- : ruleNames(std::move(ruleNames)), literalNames(std::move(literalNames)),
- symbolicNames(std::move(symbolicNames)),
- vocabulary(this->literalNames, this->symbolicNames) {}
-
- Css3ParserStaticData(const Css3ParserStaticData&) = delete;
- Css3ParserStaticData(Css3ParserStaticData&&) = delete;
- Css3ParserStaticData& operator=(const Css3ParserStaticData&) = delete;
- Css3ParserStaticData& operator=(Css3ParserStaticData&&) = delete;
-
- std::vector decisionToDFA;
- antlr4::atn::PredictionContextCache sharedContextCache;
- const std::vector ruleNames;
- const std::vector literalNames;
- const std::vector symbolicNames;
- const antlr4::dfa::Vocabulary vocabulary;
- antlr4::atn::SerializedATNView serializedATN;
- std::unique_ptr atn;
-};
-
-::antlr4::internal::OnceFlag css3parserParserOnceFlag;
-#if ANTLR4_USE_THREAD_LOCAL_CACHE
-static thread_local
-#endif
-Css3ParserStaticData *css3parserParserStaticData = nullptr;
-
-void css3parserParserInitialize() {
-#if ANTLR4_USE_THREAD_LOCAL_CACHE
- if (css3parserParserStaticData != nullptr) {
- return;
- }
-#else
- assert(css3parserParserStaticData == nullptr);
-#endif
- auto staticData = std::make_unique(
- std::vector{
- "stylesheet", "charset", "imports", "namespace_", "namespacePrefix",
- "media", "mediaQueryList", "mediaQuery", "mediaType", "mediaExpression",
- "mediaFeature", "page", "pseudoPage", "selectorGroup", "selector",
- "combinator", "simpleSelectorSequence", "typeSelector", "typeNamespacePrefix",
- "elementName", "universal", "className", "attrib", "pseudo", "functionalPseudo",
- "expression", "negation", "negationArg", "operator_", "property_",
- "ruleset", "declarationList", "declaration", "prio", "value", "expr",
- "term", "function_", "dxImageTransform", "hexcolor", "number", "percentage",
- "dimension", "unknownDimension", "any_", "atRule", "unused", "block",
- "nestedStatement", "groupRuleBody", "supportsRule", "supportsCondition",
- "supportsConditionInParens", "supportsNegation", "supportsConjunction",
- "supportsDisjunction", "supportsDeclarationCondition", "generalEnclosed",
- "url", "var_", "calc", "calcOperand", "calcSign", "calcExpr", "calcNestedValue",
- "calcValue", "fontFaceRule", "fontFaceDeclaration", "keyframesRule",
- "keyframeBlock", "keyframeSelector", "viewport", "counterStyle", "fontFeatureValuesRule",
- "fontFamilyNameList", "fontFamilyName", "featureValueBlock", "featureType",
- "featureValueDefinition", "ident", "ws", "color", "color_alpha", "color_component"
- },
- std::vector{
- "", "'['", "']'", "'('", "')'", "'{'", "'}'", "';'", "'='", "':'",
- "'.'", "'*'", "'/'", "'|'", "'_'", "", "", "", "''",
- "'~='", "'|='", "", "", "", "", "", "'@charset '", "", "", "'url('",
- "", "", "", "", "", "", "'+'", "'-'", "'>'", "','", "'~'", "", "",
- "", "'^='", "'$='", "'*='", "", "", "", "", "", "", "'calc('", "'rgb('",
- "'rgba('", "", "", "", "", "", "", "'var('"
- },
- std::vector{
- "", "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace",
- "CloseBrace", "SemiColon", "Equal", "Colon", "Dot", "Multiply", "Divide",
- "Pipe", "Underscore", "Comment", "Url", "Space", "Cdo", "Cdc", "Includes",
- "DashMatch", "Hash", "Import", "Page", "Media", "Namespace", "Charset",
- "Important", "Percentage", "Url_", "UnicodeRange", "MediaOnly", "Not",
- "And", "Dimension", "UnknownDimension", "Plus", "Minus", "Greater",
- "Comma", "Tilde", "PseudoNot", "Number", "String_", "PrefixMatch",
- "SuffixMatch", "SubstringMatch", "FontFace", "Supports", "Or", "Keyframes",
- "From", "To", "Calc", "Rgb", "Rgba", "Viewport", "CounterStyle", "FontFeatureValues",
- "DxImageTransform", "AtKeyword", "Variable", "Var", "Ident", "Function_",
- "UnexpectedCharacter"
- }
- );
- static const int32_t serializedATNSegment[] = {
- 4,1,66,1191,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,7,
- 28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,
- 35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,
- 42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,
- 49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,
- 56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,
- 63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,
- 70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,
- 77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,1,0,1,
- 0,1,0,5,0,172,8,0,10,0,12,0,175,9,0,5,0,177,8,0,10,0,12,0,180,9,0,1,0,
- 1,0,5,0,184,8,0,10,0,12,0,187,9,0,5,0,189,8,0,10,0,12,0,192,9,0,1,0,1,
- 0,5,0,196,8,0,10,0,12,0,199,9,0,5,0,201,8,0,10,0,12,0,204,9,0,1,0,1,0,
- 5,0,208,8,0,10,0,12,0,211,9,0,5,0,213,8,0,10,0,12,0,216,9,0,1,0,1,0,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,232,8,1,1,2,1,2,1,2,
- 1,2,3,2,238,8,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,249,8,2,1,2,1,
- 2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,259,8,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,
- 268,8,2,1,2,1,2,3,2,272,8,2,1,3,1,3,1,3,1,3,1,3,3,3,279,8,3,1,3,1,3,3,
- 3,283,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,294,8,3,1,3,1,3,3,3,
- 298,8,3,1,3,1,3,3,3,302,8,3,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,
- 6,1,6,1,6,5,6,317,8,6,10,6,12,6,320,9,6,3,6,322,8,6,1,6,1,6,1,7,3,7,327,
- 8,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,5,7,336,8,7,10,7,12,7,339,9,7,1,7,1,7,
- 1,7,1,7,1,7,5,7,346,8,7,10,7,12,7,349,9,7,3,7,351,8,7,1,8,1,8,1,9,1,9,
- 1,9,1,9,1,9,1,9,1,9,3,9,362,8,9,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,
- 1,11,3,11,373,8,11,1,11,1,11,1,11,3,11,378,8,11,1,11,1,11,1,11,3,11,383,
- 8,11,5,11,385,8,11,10,11,12,11,388,9,11,1,11,1,11,1,11,1,12,1,12,1,12,
- 1,12,1,13,1,13,1,13,1,13,1,13,5,13,402,8,13,10,13,12,13,405,9,13,1,14,
- 1,14,1,14,1,14,1,14,1,14,5,14,413,8,14,10,14,12,14,416,9,14,1,15,1,15,
- 1,15,1,15,1,15,1,15,1,15,1,15,3,15,426,8,15,1,16,1,16,3,16,430,8,16,1,
- 16,1,16,1,16,1,16,1,16,5,16,437,8,16,10,16,12,16,440,9,16,1,16,1,16,1,
- 16,1,16,1,16,4,16,447,8,16,11,16,12,16,448,3,16,451,8,16,1,17,3,17,454,
- 8,17,1,17,1,17,1,18,1,18,3,18,460,8,18,1,18,1,18,1,19,1,19,1,20,3,20,
- 467,8,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,3,22,477,8,22,1,22,1,
- 22,1,22,1,22,1,22,1,22,3,22,485,8,22,1,22,1,22,3,22,489,8,22,1,22,1,22,
- 1,23,1,23,3,23,495,8,23,1,23,1,23,3,23,499,8,23,1,24,1,24,1,24,1,24,1,
- 24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,513,8,25,1,25,4,25,516,8,25,
- 11,25,12,25,517,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,
- 1,27,3,27,532,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,542,8,
- 28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,553,8,29,1,30,1,
- 30,1,30,1,30,3,30,559,8,30,1,30,1,30,1,30,1,30,5,30,565,8,30,10,30,12,
- 30,568,9,30,1,30,1,30,1,30,3,30,573,8,30,1,30,1,30,1,30,3,30,578,8,30,
- 1,31,1,31,5,31,582,8,31,10,31,12,31,585,9,31,1,31,1,31,1,31,1,31,1,31,
- 3,31,592,8,31,5,31,594,8,31,10,31,12,31,597,9,31,1,32,1,32,1,32,1,32,
- 1,32,3,32,604,8,32,1,32,1,32,1,32,1,32,1,32,3,32,611,8,32,1,33,1,33,1,
- 33,1,34,1,34,1,34,1,34,4,34,620,8,34,11,34,12,34,621,1,35,1,35,3,35,626,
- 8,35,1,35,5,35,629,8,35,10,35,12,35,632,9,35,1,36,1,36,1,36,1,36,1,36,
- 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,
- 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,662,8,36,1,37,1,37,
- 1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,40,
- 3,40,680,8,40,1,40,1,40,1,41,3,41,685,8,41,1,41,1,41,1,42,3,42,690,8,
- 42,1,42,1,42,1,43,3,43,695,8,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,
- 44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,
- 44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,
- 44,5,44,733,8,44,10,44,12,44,736,9,44,1,44,1,44,1,44,1,44,1,44,1,44,1,
- 44,5,44,745,8,44,10,44,12,44,748,9,44,1,44,1,44,1,44,1,44,1,44,1,44,1,
- 44,5,44,757,8,44,10,44,12,44,760,9,44,1,44,1,44,1,44,3,44,765,8,44,1,
- 45,1,45,1,45,5,45,770,8,45,10,45,12,45,773,9,45,1,45,1,45,1,45,3,45,778,
- 8,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,789,8,46,1,47,
- 1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,5,47,801,8,47,10,47,12,47,
- 804,9,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,
- 1,48,3,48,819,8,48,1,49,1,49,1,49,5,49,824,8,49,10,49,12,49,827,9,49,
- 1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,3,51,
- 842,8,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,852,8,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,54,1,
- 54,4,54,870,8,54,11,54,12,54,871,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,
- 55,1,55,1,55,4,55,884,8,55,11,55,12,55,885,1,56,1,56,1,56,1,56,1,56,1,
- 57,1,57,1,57,5,57,896,8,57,10,57,12,57,899,9,57,1,57,1,57,1,58,1,58,1,
- 58,1,58,1,58,1,58,1,58,3,58,910,8,58,1,59,1,59,1,59,1,59,1,59,1,59,1,
- 59,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63,1,63,1,
- 63,1,63,1,63,1,63,1,63,5,63,937,8,63,10,63,12,63,940,9,63,1,63,1,63,1,
- 64,3,64,945,8,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,
- 65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,
- 65,971,8,65,1,66,1,66,1,66,1,66,1,66,3,66,978,8,66,1,66,1,66,1,66,3,66,
- 983,8,66,5,66,985,8,66,10,66,12,66,988,9,66,1,66,1,66,1,66,1,67,1,67,
- 1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,1003,8,67,1,68,1,68,1,68,
- 1,68,1,68,1,68,1,68,1,68,1,68,5,68,1014,8,68,10,68,12,68,1017,9,68,1,
- 68,1,68,1,68,1,69,1,69,1,69,1,69,3,69,1026,8,69,1,69,1,69,1,69,1,70,1,
- 70,1,70,1,70,1,70,1,70,1,70,5,70,1038,8,70,10,70,12,70,1041,9,70,1,71,
- 1,71,1,71,1,71,1,71,3,71,1048,8,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,
- 1,72,1,72,1,72,3,72,1060,8,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,
- 1,73,1,73,5,73,1072,8,73,10,73,12,73,1075,9,73,1,73,1,73,1,73,1,74,1,
- 74,1,74,1,74,1,74,1,74,5,74,1086,8,74,10,74,12,74,1089,9,74,1,75,1,75,
- 1,75,1,75,1,75,5,75,1096,8,75,10,75,12,75,1099,9,75,3,75,1101,8,75,1,
- 76,1,76,1,76,1,76,1,76,3,76,1108,8,76,1,76,1,76,1,76,1,76,3,76,1114,8,
- 76,5,76,1116,8,76,10,76,12,76,1119,9,76,1,76,1,76,1,76,1,77,1,77,1,78,
- 1,78,1,78,1,78,1,78,1,78,1,78,1,78,5,78,1134,8,78,10,78,12,78,1137,9,
- 78,1,79,1,79,1,80,5,80,1142,8,80,10,80,12,80,1145,9,80,1,81,1,81,1,81,
- 1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1160,8,81,1,81,
- 1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,
- 1176,8,81,1,81,1,81,1,81,3,81,1181,8,81,1,82,1,82,3,82,1185,8,82,1,83,
- 1,83,3,83,1189,8,83,1,83,0,0,84,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,0,10,2,0,15,15,17,19,1,0,32,33,3,0,8,
- 8,20,21,45,47,1,0,37,38,2,0,3,3,65,65,2,0,11,12,37,38,2,0,29,29,52,53,
- 4,0,32,34,50,50,52,53,64,64,2,0,15,15,17,17,1,0,55,56,1295,0,168,1,0,
- 0,0,2,231,1,0,0,0,4,271,1,0,0,0,6,301,1,0,0,0,8,303,1,0,0,0,10,305,1,
- 0,0,0,12,321,1,0,0,0,14,350,1,0,0,0,16,352,1,0,0,0,18,354,1,0,0,0,20,
- 366,1,0,0,0,22,369,1,0,0,0,24,392,1,0,0,0,26,396,1,0,0,0,28,406,1,0,0,
- 0,30,425,1,0,0,0,32,450,1,0,0,0,34,453,1,0,0,0,36,459,1,0,0,0,38,463,
- 1,0,0,0,40,466,1,0,0,0,42,470,1,0,0,0,44,473,1,0,0,0,46,492,1,0,0,0,48,
- 500,1,0,0,0,50,515,1,0,0,0,52,519,1,0,0,0,54,531,1,0,0,0,56,541,1,0,0,
- 0,58,552,1,0,0,0,60,577,1,0,0,0,62,583,1,0,0,0,64,610,1,0,0,0,66,612,
- 1,0,0,0,68,619,1,0,0,0,70,623,1,0,0,0,72,661,1,0,0,0,74,663,1,0,0,0,76,
- 669,1,0,0,0,78,675,1,0,0,0,80,679,1,0,0,0,82,684,1,0,0,0,84,689,1,0,0,
- 0,86,694,1,0,0,0,88,764,1,0,0,0,90,766,1,0,0,0,92,788,1,0,0,0,94,790,
- 1,0,0,0,96,818,1,0,0,0,98,820,1,0,0,0,100,831,1,0,0,0,102,841,1,0,0,0,
- 104,851,1,0,0,0,106,853,1,0,0,0,108,859,1,0,0,0,110,873,1,0,0,0,112,887,
- 1,0,0,0,114,892,1,0,0,0,116,909,1,0,0,0,118,911,1,0,0,0,120,918,1,0,0,
- 0,122,924,1,0,0,0,124,926,1,0,0,0,126,928,1,0,0,0,128,944,1,0,0,0,130,
- 970,1,0,0,0,132,972,1,0,0,0,134,1002,1,0,0,0,136,1004,1,0,0,0,138,1021,
- 1,0,0,0,140,1030,1,0,0,0,142,1042,1,0,0,0,144,1052,1,0,0,0,146,1064,1,
- 0,0,0,148,1079,1,0,0,0,150,1100,1,0,0,0,152,1102,1,0,0,0,154,1123,1,0,
- 0,0,156,1125,1,0,0,0,158,1138,1,0,0,0,160,1143,1,0,0,0,162,1180,1,0,0,
- 0,164,1184,1,0,0,0,166,1188,1,0,0,0,168,178,3,160,80,0,169,173,3,2,1,
- 0,170,172,7,0,0,0,171,170,1,0,0,0,172,175,1,0,0,0,173,171,1,0,0,0,173,
- 174,1,0,0,0,174,177,1,0,0,0,175,173,1,0,0,0,176,169,1,0,0,0,177,180,1,
- 0,0,0,178,176,1,0,0,0,178,179,1,0,0,0,179,190,1,0,0,0,180,178,1,0,0,0,
- 181,185,3,4,2,0,182,184,7,0,0,0,183,182,1,0,0,0,184,187,1,0,0,0,185,183,
- 1,0,0,0,185,186,1,0,0,0,186,189,1,0,0,0,187,185,1,0,0,0,188,181,1,0,0,
- 0,189,192,1,0,0,0,190,188,1,0,0,0,190,191,1,0,0,0,191,202,1,0,0,0,192,
- 190,1,0,0,0,193,197,3,6,3,0,194,196,7,0,0,0,195,194,1,0,0,0,196,199,1,
- 0,0,0,197,195,1,0,0,0,197,198,1,0,0,0,198,201,1,0,0,0,199,197,1,0,0,0,
- 200,193,1,0,0,0,201,204,1,0,0,0,202,200,1,0,0,0,202,203,1,0,0,0,203,214,
- 1,0,0,0,204,202,1,0,0,0,205,209,3,96,48,0,206,208,7,0,0,0,207,206,1,0,
- 0,0,208,211,1,0,0,0,209,207,1,0,0,0,209,210,1,0,0,0,210,213,1,0,0,0,211,
- 209,1,0,0,0,212,205,1,0,0,0,213,216,1,0,0,0,214,212,1,0,0,0,214,215,1,
- 0,0,0,215,217,1,0,0,0,216,214,1,0,0,0,217,218,5,0,0,1,218,1,1,0,0,0,219,
- 220,5,27,0,0,220,221,3,160,80,0,221,222,5,44,0,0,222,223,3,160,80,0,223,
- 224,5,7,0,0,224,225,3,160,80,0,225,232,1,0,0,0,226,227,5,27,0,0,227,228,
- 3,160,80,0,228,229,5,44,0,0,229,230,3,160,80,0,230,232,1,0,0,0,231,219,
- 1,0,0,0,231,226,1,0,0,0,232,3,1,0,0,0,233,234,5,23,0,0,234,237,3,160,
- 80,0,235,238,5,44,0,0,236,238,3,116,58,0,237,235,1,0,0,0,237,236,1,0,
- 0,0,238,239,1,0,0,0,239,240,3,160,80,0,240,241,3,12,6,0,241,242,5,7,0,
- 0,242,243,3,160,80,0,243,272,1,0,0,0,244,245,5,23,0,0,245,248,3,160,80,
- 0,246,249,5,44,0,0,247,249,3,116,58,0,248,246,1,0,0,0,248,247,1,0,0,0,
- 249,250,1,0,0,0,250,251,3,160,80,0,251,252,5,7,0,0,252,253,3,160,80,0,
- 253,272,1,0,0,0,254,255,5,23,0,0,255,258,3,160,80,0,256,259,5,44,0,0,
- 257,259,3,116,58,0,258,256,1,0,0,0,258,257,1,0,0,0,259,260,1,0,0,0,260,
- 261,3,160,80,0,261,262,3,12,6,0,262,272,1,0,0,0,263,264,5,23,0,0,264,
- 267,3,160,80,0,265,268,5,44,0,0,266,268,3,116,58,0,267,265,1,0,0,0,267,
- 266,1,0,0,0,268,269,1,0,0,0,269,270,3,160,80,0,270,272,1,0,0,0,271,233,
- 1,0,0,0,271,244,1,0,0,0,271,254,1,0,0,0,271,263,1,0,0,0,272,5,1,0,0,0,
- 273,274,5,26,0,0,274,278,3,160,80,0,275,276,3,8,4,0,276,277,3,160,80,
- 0,277,279,1,0,0,0,278,275,1,0,0,0,278,279,1,0,0,0,279,282,1,0,0,0,280,
- 283,5,44,0,0,281,283,3,116,58,0,282,280,1,0,0,0,282,281,1,0,0,0,283,284,
- 1,0,0,0,284,285,3,160,80,0,285,286,5,7,0,0,286,287,3,160,80,0,287,302,
- 1,0,0,0,288,289,5,26,0,0,289,293,3,160,80,0,290,291,3,8,4,0,291,292,3,
- 160,80,0,292,294,1,0,0,0,293,290,1,0,0,0,293,294,1,0,0,0,294,297,1,0,
- 0,0,295,298,5,44,0,0,296,298,3,116,58,0,297,295,1,0,0,0,297,296,1,0,0,
- 0,298,299,1,0,0,0,299,300,3,160,80,0,300,302,1,0,0,0,301,273,1,0,0,0,
- 301,288,1,0,0,0,302,7,1,0,0,0,303,304,3,158,79,0,304,9,1,0,0,0,305,306,
- 5,25,0,0,306,307,3,160,80,0,307,308,3,12,6,0,308,309,3,98,49,0,309,310,
- 3,160,80,0,310,11,1,0,0,0,311,318,3,14,7,0,312,313,5,40,0,0,313,314,3,
- 160,80,0,314,315,3,14,7,0,315,317,1,0,0,0,316,312,1,0,0,0,317,320,1,0,
- 0,0,318,316,1,0,0,0,318,319,1,0,0,0,319,322,1,0,0,0,320,318,1,0,0,0,321,
- 311,1,0,0,0,321,322,1,0,0,0,322,323,1,0,0,0,323,324,3,160,80,0,324,13,
- 1,0,0,0,325,327,7,1,0,0,326,325,1,0,0,0,326,327,1,0,0,0,327,328,1,0,0,
- 0,328,329,3,160,80,0,329,330,3,16,8,0,330,337,3,160,80,0,331,332,5,34,
- 0,0,332,333,3,160,80,0,333,334,3,18,9,0,334,336,1,0,0,0,335,331,1,0,0,
- 0,336,339,1,0,0,0,337,335,1,0,0,0,337,338,1,0,0,0,338,351,1,0,0,0,339,
- 337,1,0,0,0,340,347,3,18,9,0,341,342,5,34,0,0,342,343,3,160,80,0,343,
- 344,3,18,9,0,344,346,1,0,0,0,345,341,1,0,0,0,346,349,1,0,0,0,347,345,
- 1,0,0,0,347,348,1,0,0,0,348,351,1,0,0,0,349,347,1,0,0,0,350,326,1,0,0,
- 0,350,340,1,0,0,0,351,15,1,0,0,0,352,353,3,158,79,0,353,17,1,0,0,0,354,
- 355,5,3,0,0,355,356,3,160,80,0,356,361,3,20,10,0,357,358,5,9,0,0,358,
- 359,3,160,80,0,359,360,3,70,35,0,360,362,1,0,0,0,361,357,1,0,0,0,361,
- 362,1,0,0,0,362,363,1,0,0,0,363,364,5,4,0,0,364,365,3,160,80,0,365,19,
- 1,0,0,0,366,367,3,158,79,0,367,368,3,160,80,0,368,21,1,0,0,0,369,370,
- 5,24,0,0,370,372,3,160,80,0,371,373,3,24,12,0,372,371,1,0,0,0,372,373,
- 1,0,0,0,373,374,1,0,0,0,374,375,5,5,0,0,375,377,3,160,80,0,376,378,3,
- 64,32,0,377,376,1,0,0,0,377,378,1,0,0,0,378,386,1,0,0,0,379,380,5,7,0,
- 0,380,382,3,160,80,0,381,383,3,64,32,0,382,381,1,0,0,0,382,383,1,0,0,
- 0,383,385,1,0,0,0,384,379,1,0,0,0,385,388,1,0,0,0,386,384,1,0,0,0,386,
- 387,1,0,0,0,387,389,1,0,0,0,388,386,1,0,0,0,389,390,5,6,0,0,390,391,3,
- 160,80,0,391,23,1,0,0,0,392,393,5,9,0,0,393,394,3,158,79,0,394,395,3,
- 160,80,0,395,25,1,0,0,0,396,403,3,28,14,0,397,398,5,40,0,0,398,399,3,
- 160,80,0,399,400,3,28,14,0,400,402,1,0,0,0,401,397,1,0,0,0,402,405,1,
- 0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,404,27,1,0,0,0,405,403,1,0,0,0,
- 406,407,3,32,16,0,407,414,3,160,80,0,408,409,3,30,15,0,409,410,3,32,16,
- 0,410,411,3,160,80,0,411,413,1,0,0,0,412,408,1,0,0,0,413,416,1,0,0,0,
- 414,412,1,0,0,0,414,415,1,0,0,0,415,29,1,0,0,0,416,414,1,0,0,0,417,418,
- 5,37,0,0,418,426,3,160,80,0,419,420,5,39,0,0,420,426,3,160,80,0,421,422,
- 5,41,0,0,422,426,3,160,80,0,423,424,5,17,0,0,424,426,3,160,80,0,425,417,
- 1,0,0,0,425,419,1,0,0,0,425,421,1,0,0,0,425,423,1,0,0,0,426,31,1,0,0,
- 0,427,430,3,34,17,0,428,430,3,40,20,0,429,427,1,0,0,0,429,428,1,0,0,0,
- 430,438,1,0,0,0,431,437,5,22,0,0,432,437,3,42,21,0,433,437,3,44,22,0,
- 434,437,3,46,23,0,435,437,3,52,26,0,436,431,1,0,0,0,436,432,1,0,0,0,436,
- 433,1,0,0,0,436,434,1,0,0,0,436,435,1,0,0,0,437,440,1,0,0,0,438,436,1,
- 0,0,0,438,439,1,0,0,0,439,451,1,0,0,0,440,438,1,0,0,0,441,447,5,22,0,
- 0,442,447,3,42,21,0,443,447,3,44,22,0,444,447,3,46,23,0,445,447,3,52,
- 26,0,446,441,1,0,0,0,446,442,1,0,0,0,446,443,1,0,0,0,446,444,1,0,0,0,
- 446,445,1,0,0,0,447,448,1,0,0,0,448,446,1,0,0,0,448,449,1,0,0,0,449,451,
- 1,0,0,0,450,429,1,0,0,0,450,446,1,0,0,0,451,33,1,0,0,0,452,454,3,36,18,
- 0,453,452,1,0,0,0,453,454,1,0,0,0,454,455,1,0,0,0,455,456,3,38,19,0,456,
- 35,1,0,0,0,457,460,3,158,79,0,458,460,5,11,0,0,459,457,1,0,0,0,459,458,
- 1,0,0,0,459,460,1,0,0,0,460,461,1,0,0,0,461,462,5,13,0,0,462,37,1,0,0,
- 0,463,464,3,158,79,0,464,39,1,0,0,0,465,467,3,36,18,0,466,465,1,0,0,0,
- 466,467,1,0,0,0,467,468,1,0,0,0,468,469,5,11,0,0,469,41,1,0,0,0,470,471,
- 5,10,0,0,471,472,3,158,79,0,472,43,1,0,0,0,473,474,5,1,0,0,474,476,3,
- 160,80,0,475,477,3,36,18,0,476,475,1,0,0,0,476,477,1,0,0,0,477,478,1,
- 0,0,0,478,479,3,158,79,0,479,488,3,160,80,0,480,481,7,2,0,0,481,484,3,
- 160,80,0,482,485,3,158,79,0,483,485,5,44,0,0,484,482,1,0,0,0,484,483,
- 1,0,0,0,485,486,1,0,0,0,486,487,3,160,80,0,487,489,1,0,0,0,488,480,1,
- 0,0,0,488,489,1,0,0,0,489,490,1,0,0,0,490,491,5,2,0,0,491,45,1,0,0,0,
- 492,494,5,9,0,0,493,495,5,9,0,0,494,493,1,0,0,0,494,495,1,0,0,0,495,498,
- 1,0,0,0,496,499,3,158,79,0,497,499,3,48,24,0,498,496,1,0,0,0,498,497,
- 1,0,0,0,499,47,1,0,0,0,500,501,5,65,0,0,501,502,3,160,80,0,502,503,3,
- 50,25,0,503,504,5,4,0,0,504,49,1,0,0,0,505,513,5,37,0,0,506,513,5,38,
- 0,0,507,513,5,35,0,0,508,513,5,36,0,0,509,513,5,43,0,0,510,513,5,44,0,
- 0,511,513,3,158,79,0,512,505,1,0,0,0,512,506,1,0,0,0,512,507,1,0,0,0,
- 512,508,1,0,0,0,512,509,1,0,0,0,512,510,1,0,0,0,512,511,1,0,0,0,513,514,
- 1,0,0,0,514,516,3,160,80,0,515,512,1,0,0,0,516,517,1,0,0,0,517,515,1,
- 0,0,0,517,518,1,0,0,0,518,51,1,0,0,0,519,520,5,42,0,0,520,521,3,160,80,
- 0,521,522,3,54,27,0,522,523,3,160,80,0,523,524,5,4,0,0,524,53,1,0,0,0,
- 525,532,3,34,17,0,526,532,3,40,20,0,527,532,5,22,0,0,528,532,3,42,21,
- 0,529,532,3,44,22,0,530,532,3,46,23,0,531,525,1,0,0,0,531,526,1,0,0,0,
- 531,527,1,0,0,0,531,528,1,0,0,0,531,529,1,0,0,0,531,530,1,0,0,0,532,55,
- 1,0,0,0,533,534,5,12,0,0,534,542,3,160,80,0,535,536,5,40,0,0,536,542,
- 3,160,80,0,537,538,5,17,0,0,538,542,3,160,80,0,539,540,5,8,0,0,540,542,
- 3,160,80,0,541,533,1,0,0,0,541,535,1,0,0,0,541,537,1,0,0,0,541,539,1,
- 0,0,0,542,57,1,0,0,0,543,544,3,158,79,0,544,545,3,160,80,0,545,553,1,
- 0,0,0,546,547,5,62,0,0,547,553,3,160,80,0,548,549,5,11,0,0,549,553,3,
- 158,79,0,550,551,5,14,0,0,551,553,3,158,79,0,552,543,1,0,0,0,552,546,
- 1,0,0,0,552,548,1,0,0,0,552,550,1,0,0,0,553,59,1,0,0,0,554,555,3,26,13,
- 0,555,556,5,5,0,0,556,558,3,160,80,0,557,559,3,62,31,0,558,557,1,0,0,
- 0,558,559,1,0,0,0,559,560,1,0,0,0,560,561,5,6,0,0,561,562,3,160,80,0,
- 562,578,1,0,0,0,563,565,3,88,44,0,564,563,1,0,0,0,565,568,1,0,0,0,566,
- 564,1,0,0,0,566,567,1,0,0,0,567,569,1,0,0,0,568,566,1,0,0,0,569,570,5,
- 5,0,0,570,572,3,160,80,0,571,573,3,62,31,0,572,571,1,0,0,0,572,573,1,
- 0,0,0,573,574,1,0,0,0,574,575,5,6,0,0,575,576,3,160,80,0,576,578,1,0,
- 0,0,577,554,1,0,0,0,577,566,1,0,0,0,578,61,1,0,0,0,579,580,5,7,0,0,580,
- 582,3,160,80,0,581,579,1,0,0,0,582,585,1,0,0,0,583,581,1,0,0,0,583,584,
- 1,0,0,0,584,586,1,0,0,0,585,583,1,0,0,0,586,587,3,64,32,0,587,595,3,160,
- 80,0,588,589,5,7,0,0,589,591,3,160,80,0,590,592,3,64,32,0,591,590,1,0,
- 0,0,591,592,1,0,0,0,592,594,1,0,0,0,593,588,1,0,0,0,594,597,1,0,0,0,595,
- 593,1,0,0,0,595,596,1,0,0,0,596,63,1,0,0,0,597,595,1,0,0,0,598,599,3,
- 58,29,0,599,600,5,9,0,0,600,601,3,160,80,0,601,603,3,70,35,0,602,604,
- 3,66,33,0,603,602,1,0,0,0,603,604,1,0,0,0,604,611,1,0,0,0,605,606,3,58,
- 29,0,606,607,5,9,0,0,607,608,3,160,80,0,608,609,3,68,34,0,609,611,1,0,
- 0,0,610,598,1,0,0,0,610,605,1,0,0,0,611,65,1,0,0,0,612,613,5,28,0,0,613,
- 614,3,160,80,0,614,67,1,0,0,0,615,620,3,88,44,0,616,620,3,94,47,0,617,
- 618,5,61,0,0,618,620,3,160,80,0,619,615,1,0,0,0,619,616,1,0,0,0,619,617,
- 1,0,0,0,620,621,1,0,0,0,621,619,1,0,0,0,621,622,1,0,0,0,622,69,1,0,0,
- 0,623,630,3,72,36,0,624,626,3,56,28,0,625,624,1,0,0,0,625,626,1,0,0,0,
- 626,627,1,0,0,0,627,629,3,72,36,0,628,625,1,0,0,0,629,632,1,0,0,0,630,
- 628,1,0,0,0,630,631,1,0,0,0,631,71,1,0,0,0,632,630,1,0,0,0,633,634,3,
- 80,40,0,634,635,3,160,80,0,635,662,1,0,0,0,636,637,3,82,41,0,637,638,
- 3,160,80,0,638,662,1,0,0,0,639,640,3,84,42,0,640,641,3,160,80,0,641,662,
- 1,0,0,0,642,643,5,44,0,0,643,662,3,160,80,0,644,645,5,31,0,0,645,662,
- 3,160,80,0,646,647,3,158,79,0,647,648,3,160,80,0,648,662,1,0,0,0,649,
- 662,3,118,59,0,650,651,3,116,58,0,651,652,3,160,80,0,652,662,1,0,0,0,
- 653,662,3,78,39,0,654,662,3,120,60,0,655,662,3,74,37,0,656,662,3,162,
- 81,0,657,658,3,86,43,0,658,659,3,160,80,0,659,662,1,0,0,0,660,662,3,76,
- 38,0,661,633,1,0,0,0,661,636,1,0,0,0,661,639,1,0,0,0,661,642,1,0,0,0,
- 661,644,1,0,0,0,661,646,1,0,0,0,661,649,1,0,0,0,661,650,1,0,0,0,661,653,
- 1,0,0,0,661,654,1,0,0,0,661,655,1,0,0,0,661,656,1,0,0,0,661,657,1,0,0,
- 0,661,660,1,0,0,0,662,73,1,0,0,0,663,664,5,65,0,0,664,665,3,160,80,0,
- 665,666,3,70,35,0,666,667,5,4,0,0,667,668,3,160,80,0,668,75,1,0,0,0,669,
- 670,5,60,0,0,670,671,3,160,80,0,671,672,3,70,35,0,672,673,5,4,0,0,673,
- 674,3,160,80,0,674,77,1,0,0,0,675,676,5,22,0,0,676,677,3,160,80,0,677,
- 79,1,0,0,0,678,680,7,3,0,0,679,678,1,0,0,0,679,680,1,0,0,0,680,681,1,
- 0,0,0,681,682,5,43,0,0,682,81,1,0,0,0,683,685,7,3,0,0,684,683,1,0,0,0,
- 684,685,1,0,0,0,685,686,1,0,0,0,686,687,5,29,0,0,687,83,1,0,0,0,688,690,
- 7,3,0,0,689,688,1,0,0,0,689,690,1,0,0,0,690,691,1,0,0,0,691,692,5,35,
- 0,0,692,85,1,0,0,0,693,695,7,3,0,0,694,693,1,0,0,0,694,695,1,0,0,0,695,
- 696,1,0,0,0,696,697,5,36,0,0,697,87,1,0,0,0,698,699,3,158,79,0,699,700,
- 3,160,80,0,700,765,1,0,0,0,701,702,3,80,40,0,702,703,3,160,80,0,703,765,
- 1,0,0,0,704,705,3,82,41,0,705,706,3,160,80,0,706,765,1,0,0,0,707,708,
- 3,84,42,0,708,709,3,160,80,0,709,765,1,0,0,0,710,711,3,86,43,0,711,712,
- 3,160,80,0,712,765,1,0,0,0,713,714,5,44,0,0,714,765,3,160,80,0,715,716,
- 3,116,58,0,716,717,3,160,80,0,717,765,1,0,0,0,718,719,5,22,0,0,719,765,
- 3,160,80,0,720,721,5,31,0,0,721,765,3,160,80,0,722,723,5,20,0,0,723,765,
- 3,160,80,0,724,725,5,21,0,0,725,765,3,160,80,0,726,727,5,9,0,0,727,765,
- 3,160,80,0,728,729,5,65,0,0,729,734,3,160,80,0,730,733,3,88,44,0,731,
- 733,3,92,46,0,732,730,1,0,0,0,732,731,1,0,0,0,733,736,1,0,0,0,734,732,
- 1,0,0,0,734,735,1,0,0,0,735,737,1,0,0,0,736,734,1,0,0,0,737,738,5,4,0,
- 0,738,739,3,160,80,0,739,765,1,0,0,0,740,741,5,3,0,0,741,746,3,160,80,
- 0,742,745,3,88,44,0,743,745,3,92,46,0,744,742,1,0,0,0,744,743,1,0,0,0,
- 745,748,1,0,0,0,746,744,1,0,0,0,746,747,1,0,0,0,747,749,1,0,0,0,748,746,
- 1,0,0,0,749,750,5,4,0,0,750,751,3,160,80,0,751,765,1,0,0,0,752,753,5,
- 1,0,0,753,758,3,160,80,0,754,757,3,88,44,0,755,757,3,92,46,0,756,754,
- 1,0,0,0,756,755,1,0,0,0,757,760,1,0,0,0,758,756,1,0,0,0,758,759,1,0,0,
- 0,759,761,1,0,0,0,760,758,1,0,0,0,761,762,5,2,0,0,762,763,3,160,80,0,
- 763,765,1,0,0,0,764,698,1,0,0,0,764,701,1,0,0,0,764,704,1,0,0,0,764,707,
- 1,0,0,0,764,710,1,0,0,0,764,713,1,0,0,0,764,715,1,0,0,0,764,718,1,0,0,
- 0,764,720,1,0,0,0,764,722,1,0,0,0,764,724,1,0,0,0,764,726,1,0,0,0,764,
- 728,1,0,0,0,764,740,1,0,0,0,764,752,1,0,0,0,765,89,1,0,0,0,766,767,5,
- 61,0,0,767,771,3,160,80,0,768,770,3,88,44,0,769,768,1,0,0,0,770,773,1,
- 0,0,0,771,769,1,0,0,0,771,772,1,0,0,0,772,777,1,0,0,0,773,771,1,0,0,0,
- 774,778,3,94,47,0,775,776,5,7,0,0,776,778,3,160,80,0,777,774,1,0,0,0,
- 777,775,1,0,0,0,778,91,1,0,0,0,779,789,3,94,47,0,780,781,5,61,0,0,781,
- 789,3,160,80,0,782,783,5,7,0,0,783,789,3,160,80,0,784,785,5,18,0,0,785,
- 789,3,160,80,0,786,787,5,19,0,0,787,789,3,160,80,0,788,779,1,0,0,0,788,
- 780,1,0,0,0,788,782,1,0,0,0,788,784,1,0,0,0,788,786,1,0,0,0,789,93,1,
- 0,0,0,790,791,5,5,0,0,791,802,3,160,80,0,792,801,3,62,31,0,793,801,3,
- 96,48,0,794,801,3,88,44,0,795,801,3,94,47,0,796,797,5,61,0,0,797,801,
- 3,160,80,0,798,799,5,7,0,0,799,801,3,160,80,0,800,792,1,0,0,0,800,793,
- 1,0,0,0,800,794,1,0,0,0,800,795,1,0,0,0,800,796,1,0,0,0,800,798,1,0,0,
- 0,801,804,1,0,0,0,802,800,1,0,0,0,802,803,1,0,0,0,803,805,1,0,0,0,804,
- 802,1,0,0,0,805,806,5,6,0,0,806,807,3,160,80,0,807,95,1,0,0,0,808,819,
- 3,60,30,0,809,819,3,10,5,0,810,819,3,22,11,0,811,819,3,132,66,0,812,819,
- 3,136,68,0,813,819,3,100,50,0,814,819,3,142,71,0,815,819,3,144,72,0,816,
- 819,3,146,73,0,817,819,3,90,45,0,818,808,1,0,0,0,818,809,1,0,0,0,818,
- 810,1,0,0,0,818,811,1,0,0,0,818,812,1,0,0,0,818,813,1,0,0,0,818,814,1,
- 0,0,0,818,815,1,0,0,0,818,816,1,0,0,0,818,817,1,0,0,0,819,97,1,0,0,0,
- 820,821,5,5,0,0,821,825,3,160,80,0,822,824,3,96,48,0,823,822,1,0,0,0,
- 824,827,1,0,0,0,825,823,1,0,0,0,825,826,1,0,0,0,826,828,1,0,0,0,827,825,
- 1,0,0,0,828,829,5,6,0,0,829,830,3,160,80,0,830,99,1,0,0,0,831,832,5,49,
- 0,0,832,833,3,160,80,0,833,834,3,102,51,0,834,835,3,160,80,0,835,836,
- 3,98,49,0,836,101,1,0,0,0,837,842,3,106,53,0,838,842,3,108,54,0,839,842,
- 3,110,55,0,840,842,3,104,52,0,841,837,1,0,0,0,841,838,1,0,0,0,841,839,
- 1,0,0,0,841,840,1,0,0,0,842,103,1,0,0,0,843,844,5,3,0,0,844,845,3,160,
- 80,0,845,846,3,102,51,0,846,847,3,160,80,0,847,848,5,4,0,0,848,852,1,
- 0,0,0,849,852,3,112,56,0,850,852,3,114,57,0,851,843,1,0,0,0,851,849,1,
- 0,0,0,851,850,1,0,0,0,852,105,1,0,0,0,853,854,5,33,0,0,854,855,3,160,
- 80,0,855,856,5,17,0,0,856,857,3,160,80,0,857,858,3,104,52,0,858,107,1,
- 0,0,0,859,869,3,104,52,0,860,861,3,160,80,0,861,862,5,17,0,0,862,863,
- 3,160,80,0,863,864,5,34,0,0,864,865,3,160,80,0,865,866,5,17,0,0,866,867,
- 3,160,80,0,867,868,3,104,52,0,868,870,1,0,0,0,869,860,1,0,0,0,870,871,
- 1,0,0,0,871,869,1,0,0,0,871,872,1,0,0,0,872,109,1,0,0,0,873,883,3,104,
- 52,0,874,875,3,160,80,0,875,876,5,17,0,0,876,877,3,160,80,0,877,878,5,
- 50,0,0,878,879,3,160,80,0,879,880,5,17,0,0,880,881,3,160,80,0,881,882,
- 3,104,52,0,882,884,1,0,0,0,883,874,1,0,0,0,884,885,1,0,0,0,885,883,1,
- 0,0,0,885,886,1,0,0,0,886,111,1,0,0,0,887,888,5,3,0,0,888,889,3,160,80,
- 0,889,890,3,64,32,0,890,891,5,4,0,0,891,113,1,0,0,0,892,897,7,4,0,0,893,
- 896,3,88,44,0,894,896,3,92,46,0,895,893,1,0,0,0,895,894,1,0,0,0,896,899,
- 1,0,0,0,897,895,1,0,0,0,897,898,1,0,0,0,898,900,1,0,0,0,899,897,1,0,0,
- 0,900,901,5,4,0,0,901,115,1,0,0,0,902,903,5,30,0,0,903,904,3,160,80,0,
- 904,905,5,44,0,0,905,906,3,160,80,0,906,907,5,4,0,0,907,910,1,0,0,0,908,
- 910,5,16,0,0,909,902,1,0,0,0,909,908,1,0,0,0,910,117,1,0,0,0,911,912,
- 5,63,0,0,912,913,3,160,80,0,913,914,5,62,0,0,914,915,3,160,80,0,915,916,
- 5,4,0,0,916,917,3,160,80,0,917,119,1,0,0,0,918,919,5,54,0,0,919,920,3,
- 160,80,0,920,921,3,126,63,0,921,922,5,4,0,0,922,923,3,160,80,0,923,121,
- 1,0,0,0,924,925,3,130,65,0,925,123,1,0,0,0,926,927,7,5,0,0,927,125,1,
- 0,0,0,928,938,3,122,61,0,929,930,5,17,0,0,930,931,3,160,80,0,931,932,
- 3,124,62,0,932,933,5,17,0,0,933,934,3,160,80,0,934,935,3,122,61,0,935,
- 937,1,0,0,0,936,929,1,0,0,0,937,940,1,0,0,0,938,936,1,0,0,0,938,939,1,
- 0,0,0,939,941,1,0,0,0,940,938,1,0,0,0,941,942,3,160,80,0,942,127,1,0,
- 0,0,943,945,7,3,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,948,3,160,80,0,948,949,3,126,63,0,949,950,5,4,0,0,950,
- 951,3,160,80,0,951,129,1,0,0,0,952,953,3,80,40,0,953,954,3,160,80,0,954,
- 971,1,0,0,0,955,956,3,84,42,0,956,957,3,160,80,0,957,971,1,0,0,0,958,
- 959,3,86,43,0,959,960,3,160,80,0,960,971,1,0,0,0,961,962,3,82,41,0,962,
- 963,3,160,80,0,963,971,1,0,0,0,964,965,3,128,64,0,965,966,3,160,80,0,
- 966,971,1,0,0,0,967,968,3,120,60,0,968,969,3,160,80,0,969,971,1,0,0,0,
- 970,952,1,0,0,0,970,955,1,0,0,0,970,958,1,0,0,0,970,961,1,0,0,0,970,964,
- 1,0,0,0,970,967,1,0,0,0,971,131,1,0,0,0,972,973,5,48,0,0,973,974,3,160,
- 80,0,974,975,5,5,0,0,975,977,3,160,80,0,976,978,3,134,67,0,977,976,1,
- 0,0,0,977,978,1,0,0,0,978,986,1,0,0,0,979,980,5,7,0,0,980,982,3,160,80,
- 0,981,983,3,134,67,0,982,981,1,0,0,0,982,983,1,0,0,0,983,985,1,0,0,0,
- 984,979,1,0,0,0,985,988,1,0,0,0,986,984,1,0,0,0,986,987,1,0,0,0,987,989,
- 1,0,0,0,988,986,1,0,0,0,989,990,5,6,0,0,990,991,3,160,80,0,991,133,1,
- 0,0,0,992,993,3,58,29,0,993,994,5,9,0,0,994,995,3,160,80,0,995,996,3,
- 70,35,0,996,1003,1,0,0,0,997,998,3,58,29,0,998,999,5,9,0,0,999,1000,3,
- 160,80,0,1000,1001,3,68,34,0,1001,1003,1,0,0,0,1002,992,1,0,0,0,1002,
- 997,1,0,0,0,1003,135,1,0,0,0,1004,1005,5,51,0,0,1005,1006,3,160,80,0,
- 1006,1007,5,17,0,0,1007,1008,3,160,80,0,1008,1009,3,158,79,0,1009,1010,
- 3,160,80,0,1010,1011,5,5,0,0,1011,1015,3,160,80,0,1012,1014,3,138,69,
- 0,1013,1012,1,0,0,0,1014,1017,1,0,0,0,1015,1013,1,0,0,0,1015,1016,1,0,
- 0,0,1016,1018,1,0,0,0,1017,1015,1,0,0,0,1018,1019,5,6,0,0,1019,1020,3,
- 160,80,0,1020,137,1,0,0,0,1021,1022,3,140,70,0,1022,1023,5,5,0,0,1023,
- 1025,3,160,80,0,1024,1026,3,62,31,0,1025,1024,1,0,0,0,1025,1026,1,0,0,
- 0,1026,1027,1,0,0,0,1027,1028,5,6,0,0,1028,1029,3,160,80,0,1029,139,1,
- 0,0,0,1030,1031,7,6,0,0,1031,1039,3,160,80,0,1032,1033,5,40,0,0,1033,
- 1034,3,160,80,0,1034,1035,7,6,0,0,1035,1036,3,160,80,0,1036,1038,1,0,
- 0,0,1037,1032,1,0,0,0,1038,1041,1,0,0,0,1039,1037,1,0,0,0,1039,1040,1,
- 0,0,0,1040,141,1,0,0,0,1041,1039,1,0,0,0,1042,1043,5,57,0,0,1043,1044,
- 3,160,80,0,1044,1045,5,5,0,0,1045,1047,3,160,80,0,1046,1048,3,62,31,0,
- 1047,1046,1,0,0,0,1047,1048,1,0,0,0,1048,1049,1,0,0,0,1049,1050,5,6,0,
- 0,1050,1051,3,160,80,0,1051,143,1,0,0,0,1052,1053,5,58,0,0,1053,1054,
- 3,160,80,0,1054,1055,3,158,79,0,1055,1056,3,160,80,0,1056,1057,5,5,0,
- 0,1057,1059,3,160,80,0,1058,1060,3,62,31,0,1059,1058,1,0,0,0,1059,1060,
- 1,0,0,0,1060,1061,1,0,0,0,1061,1062,5,6,0,0,1062,1063,3,160,80,0,1063,
- 145,1,0,0,0,1064,1065,5,59,0,0,1065,1066,3,160,80,0,1066,1067,3,148,74,
- 0,1067,1068,3,160,80,0,1068,1069,5,5,0,0,1069,1073,3,160,80,0,1070,1072,
- 3,152,76,0,1071,1070,1,0,0,0,1072,1075,1,0,0,0,1073,1071,1,0,0,0,1073,
- 1074,1,0,0,0,1074,1076,1,0,0,0,1075,1073,1,0,0,0,1076,1077,5,6,0,0,1077,
- 1078,3,160,80,0,1078,147,1,0,0,0,1079,1087,3,150,75,0,1080,1081,3,160,
- 80,0,1081,1082,5,40,0,0,1082,1083,3,160,80,0,1083,1084,3,150,75,0,1084,
- 1086,1,0,0,0,1085,1080,1,0,0,0,1086,1089,1,0,0,0,1087,1085,1,0,0,0,1087,
- 1088,1,0,0,0,1088,149,1,0,0,0,1089,1087,1,0,0,0,1090,1101,5,44,0,0,1091,
- 1097,3,158,79,0,1092,1093,3,160,80,0,1093,1094,3,158,79,0,1094,1096,1,
- 0,0,0,1095,1092,1,0,0,0,1096,1099,1,0,0,0,1097,1095,1,0,0,0,1097,1098,
- 1,0,0,0,1098,1101,1,0,0,0,1099,1097,1,0,0,0,1100,1090,1,0,0,0,1100,1091,
- 1,0,0,0,1101,151,1,0,0,0,1102,1103,3,154,77,0,1103,1104,3,160,80,0,1104,
- 1105,5,5,0,0,1105,1107,3,160,80,0,1106,1108,3,156,78,0,1107,1106,1,0,
- 0,0,1107,1108,1,0,0,0,1108,1117,1,0,0,0,1109,1110,3,160,80,0,1110,1111,
- 5,7,0,0,1111,1113,3,160,80,0,1112,1114,3,156,78,0,1113,1112,1,0,0,0,1113,
- 1114,1,0,0,0,1114,1116,1,0,0,0,1115,1109,1,0,0,0,1116,1119,1,0,0,0,1117,
- 1115,1,0,0,0,1117,1118,1,0,0,0,1118,1120,1,0,0,0,1119,1117,1,0,0,0,1120,
- 1121,5,6,0,0,1121,1122,3,160,80,0,1122,153,1,0,0,0,1123,1124,5,61,0,0,
- 1124,155,1,0,0,0,1125,1126,3,158,79,0,1126,1127,3,160,80,0,1127,1128,
- 5,9,0,0,1128,1129,3,160,80,0,1129,1135,3,80,40,0,1130,1131,3,160,80,0,
- 1131,1132,3,80,40,0,1132,1134,1,0,0,0,1133,1130,1,0,0,0,1134,1137,1,0,
- 0,0,1135,1133,1,0,0,0,1135,1136,1,0,0,0,1136,157,1,0,0,0,1137,1135,1,
- 0,0,0,1138,1139,7,7,0,0,1139,159,1,0,0,0,1140,1142,7,8,0,0,1141,1140,
- 1,0,0,0,1142,1145,1,0,0,0,1143,1141,1,0,0,0,1143,1144,1,0,0,0,1144,161,
- 1,0,0,0,1145,1143,1,0,0,0,1146,1147,7,9,0,0,1147,1148,3,160,80,0,1148,
- 1149,3,166,83,0,1149,1150,5,40,0,0,1150,1151,3,160,80,0,1151,1152,3,166,
- 83,0,1152,1153,5,40,0,0,1153,1154,3,160,80,0,1154,1159,3,166,83,0,1155,
- 1156,5,40,0,0,1156,1157,3,160,80,0,1157,1158,3,164,82,0,1158,1160,1,0,
- 0,0,1159,1155,1,0,0,0,1159,1160,1,0,0,0,1160,1161,1,0,0,0,1161,1162,5,
- 4,0,0,1162,1163,3,160,80,0,1163,1181,1,0,0,0,1164,1165,7,9,0,0,1165,1166,
- 3,160,80,0,1166,1167,3,166,83,0,1167,1168,3,160,80,0,1168,1169,3,166,
- 83,0,1169,1170,3,160,80,0,1170,1175,3,166,83,0,1171,1172,5,12,0,0,1172,
- 1173,3,160,80,0,1173,1174,3,164,82,0,1174,1176,1,0,0,0,1175,1171,1,0,
- 0,0,1175,1176,1,0,0,0,1176,1177,1,0,0,0,1177,1178,5,4,0,0,1178,1179,3,
- 160,80,0,1179,1181,1,0,0,0,1180,1146,1,0,0,0,1180,1164,1,0,0,0,1181,163,
- 1,0,0,0,1182,1185,3,130,65,0,1183,1185,3,120,60,0,1184,1182,1,0,0,0,1184,
- 1183,1,0,0,0,1185,165,1,0,0,0,1186,1189,3,130,65,0,1187,1189,3,120,60,
- 0,1188,1186,1,0,0,0,1188,1187,1,0,0,0,1189,167,1,0,0,0,117,173,178,185,
- 190,197,202,209,214,231,237,248,258,267,271,278,282,293,297,301,318,321,
- 326,337,347,350,361,372,377,382,386,403,414,425,429,436,438,446,448,450,
- 453,459,466,476,484,488,494,498,512,517,531,541,552,558,566,572,577,583,
- 591,595,603,610,619,621,625,630,661,679,684,689,694,732,734,744,746,756,
- 758,764,771,777,788,800,802,818,825,841,851,871,885,895,897,909,938,944,
- 970,977,982,986,1002,1015,1025,1039,1047,1059,1073,1087,1097,1100,1107,
- 1113,1117,1135,1143,1159,1175,1180,1184,1188
- };
- staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
-
- antlr4::atn::ATNDeserializer deserializer;
- staticData->atn = deserializer.deserialize(staticData->serializedATN);
-
- const size_t count = staticData->atn->getNumberOfDecisions();
- staticData->decisionToDFA.reserve(count);
- for (size_t i = 0; i < count; i++) {
- staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
- }
- css3parserParserStaticData = staticData.release();
-}
-
-}
-
-css3Parser::css3Parser(TokenStream *input) : css3Parser(input, antlr4::atn::ParserATNSimulatorOptions()) {}
-
-css3Parser::css3Parser(TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options) : Parser(input) {
- css3Parser::initialize();
- _interpreter = new atn::ParserATNSimulator(this, *css3parserParserStaticData->atn, css3parserParserStaticData->decisionToDFA, css3parserParserStaticData->sharedContextCache, options);
-}
-
-css3Parser::~css3Parser() {
- delete _interpreter;
-}
-
-const atn::ATN& css3Parser::getATN() const {
- return *css3parserParserStaticData->atn;
-}
-
-std::string css3Parser::getGrammarFileName() const {
- return "css3Parser.g4";
-}
-
-const std::vector& css3Parser::getRuleNames() const {
- return css3parserParserStaticData->ruleNames;
-}
-
-const dfa::Vocabulary& css3Parser::getVocabulary() const {
- return css3parserParserStaticData->vocabulary;
-}
-
-antlr4::atn::SerializedATNView css3Parser::getSerializedATN() const {
- return css3parserParserStaticData->serializedATN;
-}
-
-
-//----------------- StylesheetContext ------------------------------------------------------------------
-
-css3Parser::StylesheetContext::StylesheetContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-css3Parser::WsContext* css3Parser::StylesheetContext::ws() {
- return getRuleContext(0);
-}
-
-tree::TerminalNode* css3Parser::StylesheetContext::EOF() {
- return getToken(css3Parser::EOF, 0);
-}
-
-std::vector css3Parser::StylesheetContext::charset() {
- return getRuleContexts();
-}
-
-css3Parser::CharsetContext* css3Parser::StylesheetContext::charset(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::StylesheetContext::imports() {
- return getRuleContexts();
-}
-
-css3Parser::ImportsContext* css3Parser::StylesheetContext::imports(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::StylesheetContext::namespace_() {
- return getRuleContexts();
-}
-
-css3Parser::Namespace_Context* css3Parser::StylesheetContext::namespace_(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::StylesheetContext::nestedStatement() {
- return getRuleContexts();
-}
-
-css3Parser::NestedStatementContext* css3Parser::StylesheetContext::nestedStatement(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::StylesheetContext::Comment() {
- return getTokens(css3Parser::Comment);
-}
-
-tree::TerminalNode* css3Parser::StylesheetContext::Comment(size_t i) {
- return getToken(css3Parser::Comment, i);
-}
-
-std::vector css3Parser::StylesheetContext::Space() {
- return getTokens(css3Parser::Space);
-}
-
-tree::TerminalNode* css3Parser::StylesheetContext::Space(size_t i) {
- return getToken(css3Parser::Space, i);
-}
-
-std::vector css3Parser::StylesheetContext::Cdo() {
- return getTokens(css3Parser::Cdo);
-}
-
-tree::TerminalNode* css3Parser::StylesheetContext::Cdo(size_t i) {
- return getToken(css3Parser::Cdo, i);
-}
-
-std::vector css3Parser::StylesheetContext::Cdc() {
- return getTokens(css3Parser::Cdc);
-}
-
-tree::TerminalNode* css3Parser::StylesheetContext::Cdc(size_t i) {
- return getToken(css3Parser::Cdc, i);
-}
-
-
-size_t css3Parser::StylesheetContext::getRuleIndex() const {
- return css3Parser::RuleStylesheet;
-}
-
-void css3Parser::StylesheetContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterStylesheet(this);
-}
-
-void css3Parser::StylesheetContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitStylesheet(this);
-}
-
-
-std::any css3Parser::StylesheetContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitStylesheet(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::StylesheetContext* css3Parser::stylesheet() {
- StylesheetContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 0, css3Parser::RuleStylesheet);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(168);
- ws();
- setState(178);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while (_la == css3Parser::Charset) {
- setState(169);
- charset();
- setState(173);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0)) {
- setState(170);
- _la = _input->LA(1);
- if (!((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0))) {
- _errHandler->recoverInline(this);
- }
- else {
- _errHandler->reportMatch(this);
- consume();
- }
- setState(175);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(180);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(190);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while (_la == css3Parser::Import) {
- setState(181);
- imports();
- setState(185);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0)) {
- setState(182);
- _la = _input->LA(1);
- if (!((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0))) {
- _errHandler->recoverInline(this);
- }
- else {
- _errHandler->reportMatch(this);
- consume();
- }
- setState(187);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(192);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(202);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while (_la == css3Parser::Namespace) {
- setState(193);
- namespace_();
- setState(197);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0)) {
- setState(194);
- _la = _input->LA(1);
- if (!((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0))) {
- _errHandler->recoverInline(this);
- }
- else {
- _errHandler->reportMatch(this);
- consume();
- }
- setState(199);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(204);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(214);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 3332413584879726122) != 0) || _la == css3Parser::Ident
-
- || _la == css3Parser::Function_) {
- setState(205);
- nestedStatement();
- setState(209);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0)) {
- setState(206);
- _la = _input->LA(1);
- if (!((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 950272) != 0))) {
- _errHandler->recoverInline(this);
- }
- else {
- _errHandler->reportMatch(this);
- consume();
- }
- setState(211);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(216);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(217);
- match(css3Parser::EOF);
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- CharsetContext ------------------------------------------------------------------
-
-css3Parser::CharsetContext::CharsetContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-
-size_t css3Parser::CharsetContext::getRuleIndex() const {
- return css3Parser::RuleCharset;
-}
-
-void css3Parser::CharsetContext::copyFrom(CharsetContext *ctx) {
- ParserRuleContext::copyFrom(ctx);
-}
-
-//----------------- BadCharsetContext ------------------------------------------------------------------
-
-tree::TerminalNode* css3Parser::BadCharsetContext::Charset() {
- return getToken(css3Parser::Charset, 0);
-}
-
-std::vector css3Parser::BadCharsetContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::BadCharsetContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-tree::TerminalNode* css3Parser::BadCharsetContext::String_() {
- return getToken(css3Parser::String_, 0);
-}
-
-css3Parser::BadCharsetContext::BadCharsetContext(CharsetContext *ctx) { copyFrom(ctx); }
-
-void css3Parser::BadCharsetContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterBadCharset(this);
-}
-void css3Parser::BadCharsetContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitBadCharset(this);
-}
-
-std::any css3Parser::BadCharsetContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitBadCharset(this);
- else
- return visitor->visitChildren(this);
-}
-//----------------- GoodCharsetContext ------------------------------------------------------------------
-
-tree::TerminalNode* css3Parser::GoodCharsetContext::Charset() {
- return getToken(css3Parser::Charset, 0);
-}
-
-std::vector css3Parser::GoodCharsetContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::GoodCharsetContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-tree::TerminalNode* css3Parser::GoodCharsetContext::String_() {
- return getToken(css3Parser::String_, 0);
-}
-
-tree::TerminalNode* css3Parser::GoodCharsetContext::SemiColon() {
- return getToken(css3Parser::SemiColon, 0);
-}
-
-css3Parser::GoodCharsetContext::GoodCharsetContext(CharsetContext *ctx) { copyFrom(ctx); }
-
-void css3Parser::GoodCharsetContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterGoodCharset(this);
-}
-void css3Parser::GoodCharsetContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitGoodCharset(this);
-}
-
-std::any css3Parser::GoodCharsetContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitGoodCharset(this);
- else
- return visitor->visitChildren(this);
-}
-css3Parser::CharsetContext* css3Parser::charset() {
- CharsetContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 2, css3Parser::RuleCharset);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- setState(231);
- _errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) {
- case 1: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 1);
- setState(219);
- match(css3Parser::Charset);
- setState(220);
- ws();
- setState(221);
- match(css3Parser::String_);
- setState(222);
- ws();
- setState(223);
- match(css3Parser::SemiColon);
- setState(224);
- ws();
- break;
- }
-
- case 2: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 2);
- setState(226);
- match(css3Parser::Charset);
- setState(227);
- ws();
- setState(228);
- match(css3Parser::String_);
- setState(229);
- ws();
- break;
- }
-
- default:
- break;
- }
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- ImportsContext ------------------------------------------------------------------
-
-css3Parser::ImportsContext::ImportsContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-
-size_t css3Parser::ImportsContext::getRuleIndex() const {
- return css3Parser::RuleImports;
-}
-
-void css3Parser::ImportsContext::copyFrom(ImportsContext *ctx) {
- ParserRuleContext::copyFrom(ctx);
-}
-
-//----------------- BadImportContext ------------------------------------------------------------------
-
-tree::TerminalNode* css3Parser::BadImportContext::Import() {
- return getToken(css3Parser::Import, 0);
-}
-
-std::vector css3Parser::BadImportContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::BadImportContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-css3Parser::MediaQueryListContext* css3Parser::BadImportContext::mediaQueryList() {
- return getRuleContext(0);
-}
-
-tree::TerminalNode* css3Parser::BadImportContext::String_() {
- return getToken(css3Parser::String_, 0);
-}
-
-css3Parser::UrlContext* css3Parser::BadImportContext::url() {
- return getRuleContext(0);
-}
-
-css3Parser::BadImportContext::BadImportContext(ImportsContext *ctx) { copyFrom(ctx); }
-
-void css3Parser::BadImportContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterBadImport(this);
-}
-void css3Parser::BadImportContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitBadImport(this);
-}
-
-std::any css3Parser::BadImportContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitBadImport(this);
- else
- return visitor->visitChildren(this);
-}
-//----------------- GoodImportContext ------------------------------------------------------------------
-
-tree::TerminalNode* css3Parser::GoodImportContext::Import() {
- return getToken(css3Parser::Import, 0);
-}
-
-std::vector css3Parser::GoodImportContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::GoodImportContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-css3Parser::MediaQueryListContext* css3Parser::GoodImportContext::mediaQueryList() {
- return getRuleContext(0);
-}
-
-tree::TerminalNode* css3Parser::GoodImportContext::SemiColon() {
- return getToken(css3Parser::SemiColon, 0);
-}
-
-tree::TerminalNode* css3Parser::GoodImportContext::String_() {
- return getToken(css3Parser::String_, 0);
-}
-
-css3Parser::UrlContext* css3Parser::GoodImportContext::url() {
- return getRuleContext(0);
-}
-
-css3Parser::GoodImportContext::GoodImportContext(ImportsContext *ctx) { copyFrom(ctx); }
-
-void css3Parser::GoodImportContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterGoodImport(this);
-}
-void css3Parser::GoodImportContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitGoodImport(this);
-}
-
-std::any css3Parser::GoodImportContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitGoodImport(this);
- else
- return visitor->visitChildren(this);
-}
-css3Parser::ImportsContext* css3Parser::imports() {
- ImportsContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 4, css3Parser::RuleImports);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- setState(271);
- _errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) {
- case 1: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 1);
- setState(233);
- match(css3Parser::Import);
- setState(234);
- ws();
- setState(237);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::String_: {
- setState(235);
- match(css3Parser::String_);
- break;
- }
-
- case css3Parser::Url:
- case css3Parser::Url_: {
- setState(236);
- url();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(239);
- ws();
- setState(240);
- mediaQueryList();
- setState(241);
- match(css3Parser::SemiColon);
- setState(242);
- ws();
- break;
- }
-
- case 2: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 2);
- setState(244);
- match(css3Parser::Import);
- setState(245);
- ws();
- setState(248);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::String_: {
- setState(246);
- match(css3Parser::String_);
- break;
- }
-
- case css3Parser::Url:
- case css3Parser::Url_: {
- setState(247);
- url();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(250);
- ws();
- setState(251);
- match(css3Parser::SemiColon);
- setState(252);
- ws();
- break;
- }
-
- case 3: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 3);
- setState(254);
- match(css3Parser::Import);
- setState(255);
- ws();
- setState(258);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::String_: {
- setState(256);
- match(css3Parser::String_);
- break;
- }
-
- case css3Parser::Url:
- case css3Parser::Url_: {
- setState(257);
- url();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(260);
- ws();
- setState(261);
- mediaQueryList();
- break;
- }
-
- case 4: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 4);
- setState(263);
- match(css3Parser::Import);
- setState(264);
- ws();
- setState(267);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::String_: {
- setState(265);
- match(css3Parser::String_);
- break;
- }
-
- case css3Parser::Url:
- case css3Parser::Url_: {
- setState(266);
- url();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(269);
- ws();
- break;
- }
-
- default:
- break;
- }
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- Namespace_Context ------------------------------------------------------------------
-
-css3Parser::Namespace_Context::Namespace_Context(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-
-size_t css3Parser::Namespace_Context::getRuleIndex() const {
- return css3Parser::RuleNamespace_;
-}
-
-void css3Parser::Namespace_Context::copyFrom(Namespace_Context *ctx) {
- ParserRuleContext::copyFrom(ctx);
-}
-
-//----------------- GoodNamespaceContext ------------------------------------------------------------------
-
-tree::TerminalNode* css3Parser::GoodNamespaceContext::Namespace() {
- return getToken(css3Parser::Namespace, 0);
-}
-
-std::vector css3Parser::GoodNamespaceContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::GoodNamespaceContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-tree::TerminalNode* css3Parser::GoodNamespaceContext::SemiColon() {
- return getToken(css3Parser::SemiColon, 0);
-}
-
-tree::TerminalNode* css3Parser::GoodNamespaceContext::String_() {
- return getToken(css3Parser::String_, 0);
-}
-
-css3Parser::UrlContext* css3Parser::GoodNamespaceContext::url() {
- return getRuleContext(0);
-}
-
-css3Parser::NamespacePrefixContext* css3Parser::GoodNamespaceContext::namespacePrefix() {
- return getRuleContext(0);
-}
-
-css3Parser::GoodNamespaceContext::GoodNamespaceContext(Namespace_Context *ctx) { copyFrom(ctx); }
-
-void css3Parser::GoodNamespaceContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterGoodNamespace(this);
-}
-void css3Parser::GoodNamespaceContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitGoodNamespace(this);
-}
-
-std::any css3Parser::GoodNamespaceContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitGoodNamespace(this);
- else
- return visitor->visitChildren(this);
-}
-//----------------- BadNamespaceContext ------------------------------------------------------------------
-
-tree::TerminalNode* css3Parser::BadNamespaceContext::Namespace() {
- return getToken(css3Parser::Namespace, 0);
-}
-
-std::vector css3Parser::BadNamespaceContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::BadNamespaceContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-tree::TerminalNode* css3Parser::BadNamespaceContext::String_() {
- return getToken(css3Parser::String_, 0);
-}
-
-css3Parser::UrlContext* css3Parser::BadNamespaceContext::url() {
- return getRuleContext(0);
-}
-
-css3Parser::NamespacePrefixContext* css3Parser::BadNamespaceContext::namespacePrefix() {
- return getRuleContext(0);
-}
-
-css3Parser::BadNamespaceContext::BadNamespaceContext(Namespace_Context *ctx) { copyFrom(ctx); }
-
-void css3Parser::BadNamespaceContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterBadNamespace(this);
-}
-void css3Parser::BadNamespaceContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitBadNamespace(this);
-}
-
-std::any css3Parser::BadNamespaceContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitBadNamespace(this);
- else
- return visitor->visitChildren(this);
-}
-css3Parser::Namespace_Context* css3Parser::namespace_() {
- Namespace_Context *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 6, css3Parser::RuleNamespace_);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- setState(301);
- _errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 18, _ctx)) {
- case 1: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 1);
- setState(273);
- match(css3Parser::Namespace);
- setState(274);
- ws();
- setState(278);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (((((_la - 32) & ~ 0x3fULL) == 0) &&
- ((1ULL << (_la - 32)) & 4298375175) != 0)) {
- setState(275);
- namespacePrefix();
- setState(276);
- ws();
- }
- setState(282);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::String_: {
- setState(280);
- match(css3Parser::String_);
- break;
- }
-
- case css3Parser::Url:
- case css3Parser::Url_: {
- setState(281);
- url();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(284);
- ws();
- setState(285);
- match(css3Parser::SemiColon);
- setState(286);
- ws();
- break;
- }
-
- case 2: {
- _localctx = _tracker.createInstance(_localctx);
- enterOuterAlt(_localctx, 2);
- setState(288);
- match(css3Parser::Namespace);
- setState(289);
- ws();
- setState(293);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (((((_la - 32) & ~ 0x3fULL) == 0) &&
- ((1ULL << (_la - 32)) & 4298375175) != 0)) {
- setState(290);
- namespacePrefix();
- setState(291);
- ws();
- }
- setState(297);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::String_: {
- setState(295);
- match(css3Parser::String_);
- break;
- }
-
- case css3Parser::Url:
- case css3Parser::Url_: {
- setState(296);
- url();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(299);
- ws();
- break;
- }
-
- default:
- break;
- }
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- NamespacePrefixContext ------------------------------------------------------------------
-
-css3Parser::NamespacePrefixContext::NamespacePrefixContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-css3Parser::IdentContext* css3Parser::NamespacePrefixContext::ident() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::NamespacePrefixContext::getRuleIndex() const {
- return css3Parser::RuleNamespacePrefix;
-}
-
-void css3Parser::NamespacePrefixContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterNamespacePrefix(this);
-}
-
-void css3Parser::NamespacePrefixContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitNamespacePrefix(this);
-}
-
-
-std::any css3Parser::NamespacePrefixContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitNamespacePrefix(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::NamespacePrefixContext* css3Parser::namespacePrefix() {
- NamespacePrefixContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 8, css3Parser::RuleNamespacePrefix);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(303);
- ident();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- MediaContext ------------------------------------------------------------------
-
-css3Parser::MediaContext::MediaContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-tree::TerminalNode* css3Parser::MediaContext::Media() {
- return getToken(css3Parser::Media, 0);
-}
-
-std::vector css3Parser::MediaContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::MediaContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-css3Parser::MediaQueryListContext* css3Parser::MediaContext::mediaQueryList() {
- return getRuleContext(0);
-}
-
-css3Parser::GroupRuleBodyContext* css3Parser::MediaContext::groupRuleBody() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::MediaContext::getRuleIndex() const {
- return css3Parser::RuleMedia;
-}
-
-void css3Parser::MediaContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterMedia(this);
-}
-
-void css3Parser::MediaContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitMedia(this);
-}
-
-
-std::any css3Parser::MediaContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitMedia(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::MediaContext* css3Parser::media() {
- MediaContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 10, css3Parser::RuleMedia);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(305);
- match(css3Parser::Media);
- setState(306);
- ws();
- setState(307);
- mediaQueryList();
- setState(308);
- groupRuleBody();
- setState(309);
- ws();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- MediaQueryListContext ------------------------------------------------------------------
-
-css3Parser::MediaQueryListContext::MediaQueryListContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-std::vector css3Parser::MediaQueryListContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::MediaQueryListContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::MediaQueryListContext::mediaQuery() {
- return getRuleContexts();
-}
-
-css3Parser::MediaQueryContext* css3Parser::MediaQueryListContext::mediaQuery(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::MediaQueryListContext::Comma() {
- return getTokens(css3Parser::Comma);
-}
-
-tree::TerminalNode* css3Parser::MediaQueryListContext::Comma(size_t i) {
- return getToken(css3Parser::Comma, i);
-}
-
-
-size_t css3Parser::MediaQueryListContext::getRuleIndex() const {
- return css3Parser::RuleMediaQueryList;
-}
-
-void css3Parser::MediaQueryListContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterMediaQueryList(this);
-}
-
-void css3Parser::MediaQueryListContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitMediaQueryList(this);
-}
-
-
-std::any css3Parser::MediaQueryListContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitMediaQueryList(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::MediaQueryListContext* css3Parser::mediaQueryList() {
- MediaQueryListContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 12, css3Parser::RuleMediaQueryList);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(321);
- _errHandler->sync(this);
-
- switch (getInterpreter()->adaptivePredict(_input, 20, _ctx)) {
- case 1: {
- setState(311);
- mediaQuery();
- setState(318);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while (_la == css3Parser::Comma) {
- setState(312);
- match(css3Parser::Comma);
- setState(313);
- ws();
- setState(314);
- mediaQuery();
- setState(320);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- break;
- }
-
- default:
- break;
- }
- setState(323);
- ws();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- MediaQueryContext ------------------------------------------------------------------
-
-css3Parser::MediaQueryContext::MediaQueryContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-std::vector css3Parser::MediaQueryContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::MediaQueryContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-css3Parser::MediaTypeContext* css3Parser::MediaQueryContext::mediaType() {
- return getRuleContext(0);
-}
-
-std::vector css3Parser::MediaQueryContext::And() {
- return getTokens(css3Parser::And);
-}
-
-tree::TerminalNode* css3Parser::MediaQueryContext::And(size_t i) {
- return getToken(css3Parser::And, i);
-}
-
-std::vector css3Parser::MediaQueryContext::mediaExpression() {
- return getRuleContexts();
-}
-
-css3Parser::MediaExpressionContext* css3Parser::MediaQueryContext::mediaExpression(size_t i) {
- return getRuleContext(i);
-}
-
-tree::TerminalNode* css3Parser::MediaQueryContext::MediaOnly() {
- return getToken(css3Parser::MediaOnly, 0);
-}
-
-tree::TerminalNode* css3Parser::MediaQueryContext::Not() {
- return getToken(css3Parser::Not, 0);
-}
-
-
-size_t css3Parser::MediaQueryContext::getRuleIndex() const {
- return css3Parser::RuleMediaQuery;
-}
-
-void css3Parser::MediaQueryContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterMediaQuery(this);
-}
-
-void css3Parser::MediaQueryContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitMediaQuery(this);
-}
-
-
-std::any css3Parser::MediaQueryContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitMediaQuery(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::MediaQueryContext* css3Parser::mediaQuery() {
- MediaQueryContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 14, css3Parser::RuleMediaQuery);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- size_t alt;
- setState(350);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::Comment:
- case css3Parser::Space:
- case css3Parser::MediaOnly:
- case css3Parser::Not:
- case css3Parser::And:
- case css3Parser::Or:
- case css3Parser::From:
- case css3Parser::To:
- case css3Parser::Ident: {
- enterOuterAlt(_localctx, 1);
- setState(326);
- _errHandler->sync(this);
-
- switch (getInterpreter()->adaptivePredict(_input, 21, _ctx)) {
- case 1: {
- setState(325);
- _la = _input->LA(1);
- if (!(_la == css3Parser::MediaOnly
-
- || _la == css3Parser::Not)) {
- _errHandler->recoverInline(this);
- }
- else {
- _errHandler->reportMatch(this);
- consume();
- }
- break;
- }
-
- default:
- break;
- }
- setState(328);
- ws();
- setState(329);
- mediaType();
- setState(330);
- ws();
- setState(337);
- _errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 22, _ctx);
- while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
- if (alt == 1) {
- setState(331);
- match(css3Parser::And);
- setState(332);
- ws();
- setState(333);
- mediaExpression();
- }
- setState(339);
- _errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 22, _ctx);
- }
- break;
- }
-
- case css3Parser::OpenParen: {
- enterOuterAlt(_localctx, 2);
- setState(340);
- mediaExpression();
- setState(347);
- _errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 23, _ctx);
- while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
- if (alt == 1) {
- setState(341);
- match(css3Parser::And);
- setState(342);
- ws();
- setState(343);
- mediaExpression();
- }
- setState(349);
- _errHandler->sync(this);
- alt = getInterpreter()->adaptivePredict(_input, 23, _ctx);
- }
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- MediaTypeContext ------------------------------------------------------------------
-
-css3Parser::MediaTypeContext::MediaTypeContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-css3Parser::IdentContext* css3Parser::MediaTypeContext::ident() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::MediaTypeContext::getRuleIndex() const {
- return css3Parser::RuleMediaType;
-}
-
-void css3Parser::MediaTypeContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterMediaType(this);
-}
-
-void css3Parser::MediaTypeContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitMediaType(this);
-}
-
-
-std::any css3Parser::MediaTypeContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitMediaType(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::MediaTypeContext* css3Parser::mediaType() {
- MediaTypeContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 16, css3Parser::RuleMediaType);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(352);
- ident();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- MediaExpressionContext ------------------------------------------------------------------
-
-css3Parser::MediaExpressionContext::MediaExpressionContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-tree::TerminalNode* css3Parser::MediaExpressionContext::OpenParen() {
- return getToken(css3Parser::OpenParen, 0);
-}
-
-std::vector css3Parser::MediaExpressionContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::MediaExpressionContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-css3Parser::MediaFeatureContext* css3Parser::MediaExpressionContext::mediaFeature() {
- return getRuleContext(0);
-}
-
-tree::TerminalNode* css3Parser::MediaExpressionContext::CloseParen() {
- return getToken(css3Parser::CloseParen, 0);
-}
-
-tree::TerminalNode* css3Parser::MediaExpressionContext::Colon() {
- return getToken(css3Parser::Colon, 0);
-}
-
-css3Parser::ExprContext* css3Parser::MediaExpressionContext::expr() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::MediaExpressionContext::getRuleIndex() const {
- return css3Parser::RuleMediaExpression;
-}
-
-void css3Parser::MediaExpressionContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterMediaExpression(this);
-}
-
-void css3Parser::MediaExpressionContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitMediaExpression(this);
-}
-
-
-std::any css3Parser::MediaExpressionContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitMediaExpression(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::MediaExpressionContext* css3Parser::mediaExpression() {
- MediaExpressionContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 18, css3Parser::RuleMediaExpression);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(354);
- match(css3Parser::OpenParen);
- setState(355);
- ws();
- setState(356);
- mediaFeature();
- setState(361);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (_la == css3Parser::Colon) {
- setState(357);
- match(css3Parser::Colon);
- setState(358);
- ws();
- setState(359);
- expr();
- }
- setState(363);
- match(css3Parser::CloseParen);
- setState(364);
- ws();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- MediaFeatureContext ------------------------------------------------------------------
-
-css3Parser::MediaFeatureContext::MediaFeatureContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-css3Parser::IdentContext* css3Parser::MediaFeatureContext::ident() {
- return getRuleContext(0);
-}
-
-css3Parser::WsContext* css3Parser::MediaFeatureContext::ws() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::MediaFeatureContext::getRuleIndex() const {
- return css3Parser::RuleMediaFeature;
-}
-
-void css3Parser::MediaFeatureContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterMediaFeature(this);
-}
-
-void css3Parser::MediaFeatureContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitMediaFeature(this);
-}
-
-
-std::any css3Parser::MediaFeatureContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitMediaFeature(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::MediaFeatureContext* css3Parser::mediaFeature() {
- MediaFeatureContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 20, css3Parser::RuleMediaFeature);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(366);
- ident();
- setState(367);
- ws();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- PageContext ------------------------------------------------------------------
-
-css3Parser::PageContext::PageContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-tree::TerminalNode* css3Parser::PageContext::Page() {
- return getToken(css3Parser::Page, 0);
-}
-
-std::vector css3Parser::PageContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::PageContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-tree::TerminalNode* css3Parser::PageContext::OpenBrace() {
- return getToken(css3Parser::OpenBrace, 0);
-}
-
-tree::TerminalNode* css3Parser::PageContext::CloseBrace() {
- return getToken(css3Parser::CloseBrace, 0);
-}
-
-css3Parser::PseudoPageContext* css3Parser::PageContext::pseudoPage() {
- return getRuleContext(0);
-}
-
-std::vector css3Parser::PageContext::declaration() {
- return getRuleContexts();
-}
-
-css3Parser::DeclarationContext* css3Parser::PageContext::declaration(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::PageContext::SemiColon() {
- return getTokens(css3Parser::SemiColon);
-}
-
-tree::TerminalNode* css3Parser::PageContext::SemiColon(size_t i) {
- return getToken(css3Parser::SemiColon, i);
-}
-
-
-size_t css3Parser::PageContext::getRuleIndex() const {
- return css3Parser::RulePage;
-}
-
-void css3Parser::PageContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterPage(this);
-}
-
-void css3Parser::PageContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitPage(this);
-}
-
-
-std::any css3Parser::PageContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitPage(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::PageContext* css3Parser::page() {
- PageContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 22, css3Parser::RulePage);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(369);
- match(css3Parser::Page);
- setState(370);
- ws();
- setState(372);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (_la == css3Parser::Colon) {
- setState(371);
- pseudoPage();
- }
- setState(374);
- match(css3Parser::OpenBrace);
- setState(375);
- ws();
- setState(377);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (((((_la - 11) & ~ 0x3fULL) == 0) &&
- ((1ULL << (_la - 11)) & 11266145908686857) != 0)) {
- setState(376);
- declaration();
- }
- setState(386);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while (_la == css3Parser::SemiColon) {
- setState(379);
- match(css3Parser::SemiColon);
- setState(380);
- ws();
- setState(382);
- _errHandler->sync(this);
-
- _la = _input->LA(1);
- if (((((_la - 11) & ~ 0x3fULL) == 0) &&
- ((1ULL << (_la - 11)) & 11266145908686857) != 0)) {
- setState(381);
- declaration();
- }
- setState(388);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- setState(389);
- match(css3Parser::CloseBrace);
- setState(390);
- ws();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- PseudoPageContext ------------------------------------------------------------------
-
-css3Parser::PseudoPageContext::PseudoPageContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-tree::TerminalNode* css3Parser::PseudoPageContext::Colon() {
- return getToken(css3Parser::Colon, 0);
-}
-
-css3Parser::IdentContext* css3Parser::PseudoPageContext::ident() {
- return getRuleContext(0);
-}
-
-css3Parser::WsContext* css3Parser::PseudoPageContext::ws() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::PseudoPageContext::getRuleIndex() const {
- return css3Parser::RulePseudoPage;
-}
-
-void css3Parser::PseudoPageContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterPseudoPage(this);
-}
-
-void css3Parser::PseudoPageContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitPseudoPage(this);
-}
-
-
-std::any css3Parser::PseudoPageContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitPseudoPage(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::PseudoPageContext* css3Parser::pseudoPage() {
- PseudoPageContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 24, css3Parser::RulePseudoPage);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(392);
- match(css3Parser::Colon);
- setState(393);
- ident();
- setState(394);
- ws();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- SelectorGroupContext ------------------------------------------------------------------
-
-css3Parser::SelectorGroupContext::SelectorGroupContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-std::vector css3Parser::SelectorGroupContext::selector() {
- return getRuleContexts();
-}
-
-css3Parser::SelectorContext* css3Parser::SelectorGroupContext::selector(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::SelectorGroupContext::Comma() {
- return getTokens(css3Parser::Comma);
-}
-
-tree::TerminalNode* css3Parser::SelectorGroupContext::Comma(size_t i) {
- return getToken(css3Parser::Comma, i);
-}
-
-std::vector css3Parser::SelectorGroupContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::SelectorGroupContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-
-size_t css3Parser::SelectorGroupContext::getRuleIndex() const {
- return css3Parser::RuleSelectorGroup;
-}
-
-void css3Parser::SelectorGroupContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterSelectorGroup(this);
-}
-
-void css3Parser::SelectorGroupContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitSelectorGroup(this);
-}
-
-
-std::any css3Parser::SelectorGroupContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitSelectorGroup(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::SelectorGroupContext* css3Parser::selectorGroup() {
- SelectorGroupContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 26, css3Parser::RuleSelectorGroup);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(396);
- selector();
- setState(403);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while (_la == css3Parser::Comma) {
- setState(397);
- match(css3Parser::Comma);
- setState(398);
- ws();
- setState(399);
- selector();
- setState(405);
- _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;
-}
-
-//----------------- SelectorContext ------------------------------------------------------------------
-
-css3Parser::SelectorContext::SelectorContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-std::vector css3Parser::SelectorContext::simpleSelectorSequence() {
- return getRuleContexts();
-}
-
-css3Parser::SimpleSelectorSequenceContext* css3Parser::SelectorContext::simpleSelectorSequence(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::SelectorContext::ws() {
- return getRuleContexts();
-}
-
-css3Parser::WsContext* css3Parser::SelectorContext::ws(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::SelectorContext::combinator() {
- return getRuleContexts();
-}
-
-css3Parser::CombinatorContext* css3Parser::SelectorContext::combinator(size_t i) {
- return getRuleContext(i);
-}
-
-
-size_t css3Parser::SelectorContext::getRuleIndex() const {
- return css3Parser::RuleSelector;
-}
-
-void css3Parser::SelectorContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterSelector(this);
-}
-
-void css3Parser::SelectorContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitSelector(this);
-}
-
-
-std::any css3Parser::SelectorContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitSelector(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::SelectorContext* css3Parser::selector() {
- SelectorContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 28, css3Parser::RuleSelector);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(406);
- simpleSelectorSequence();
- setState(407);
- ws();
- setState(414);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 2886218153984) != 0)) {
- setState(408);
- combinator();
- setState(409);
- simpleSelectorSequence();
- setState(410);
- ws();
- setState(416);
- _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;
-}
-
-//----------------- CombinatorContext ------------------------------------------------------------------
-
-css3Parser::CombinatorContext::CombinatorContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-tree::TerminalNode* css3Parser::CombinatorContext::Plus() {
- return getToken(css3Parser::Plus, 0);
-}
-
-css3Parser::WsContext* css3Parser::CombinatorContext::ws() {
- return getRuleContext(0);
-}
-
-tree::TerminalNode* css3Parser::CombinatorContext::Greater() {
- return getToken(css3Parser::Greater, 0);
-}
-
-tree::TerminalNode* css3Parser::CombinatorContext::Tilde() {
- return getToken(css3Parser::Tilde, 0);
-}
-
-tree::TerminalNode* css3Parser::CombinatorContext::Space() {
- return getToken(css3Parser::Space, 0);
-}
-
-
-size_t css3Parser::CombinatorContext::getRuleIndex() const {
- return css3Parser::RuleCombinator;
-}
-
-void css3Parser::CombinatorContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterCombinator(this);
-}
-
-void css3Parser::CombinatorContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitCombinator(this);
-}
-
-
-std::any css3Parser::CombinatorContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitCombinator(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::CombinatorContext* css3Parser::combinator() {
- CombinatorContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 30, css3Parser::RuleCombinator);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- setState(425);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::Plus: {
- enterOuterAlt(_localctx, 1);
- setState(417);
- match(css3Parser::Plus);
- setState(418);
- ws();
- break;
- }
-
- case css3Parser::Greater: {
- enterOuterAlt(_localctx, 2);
- setState(419);
- match(css3Parser::Greater);
- setState(420);
- ws();
- break;
- }
-
- case css3Parser::Tilde: {
- enterOuterAlt(_localctx, 3);
- setState(421);
- match(css3Parser::Tilde);
- setState(422);
- ws();
- break;
- }
-
- case css3Parser::Space: {
- enterOuterAlt(_localctx, 4);
- setState(423);
- match(css3Parser::Space);
- setState(424);
- ws();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- SimpleSelectorSequenceContext ------------------------------------------------------------------
-
-css3Parser::SimpleSelectorSequenceContext::SimpleSelectorSequenceContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-css3Parser::TypeSelectorContext* css3Parser::SimpleSelectorSequenceContext::typeSelector() {
- return getRuleContext(0);
-}
-
-css3Parser::UniversalContext* css3Parser::SimpleSelectorSequenceContext::universal() {
- return getRuleContext(0);
-}
-
-std::vector css3Parser::SimpleSelectorSequenceContext::Hash() {
- return getTokens(css3Parser::Hash);
-}
-
-tree::TerminalNode* css3Parser::SimpleSelectorSequenceContext::Hash(size_t i) {
- return getToken(css3Parser::Hash, i);
-}
-
-std::vector css3Parser::SimpleSelectorSequenceContext::className() {
- return getRuleContexts();
-}
-
-css3Parser::ClassNameContext* css3Parser::SimpleSelectorSequenceContext::className(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::SimpleSelectorSequenceContext::attrib() {
- return getRuleContexts();
-}
-
-css3Parser::AttribContext* css3Parser::SimpleSelectorSequenceContext::attrib(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::SimpleSelectorSequenceContext::pseudo() {
- return getRuleContexts();
-}
-
-css3Parser::PseudoContext* css3Parser::SimpleSelectorSequenceContext::pseudo(size_t i) {
- return getRuleContext(i);
-}
-
-std::vector css3Parser::SimpleSelectorSequenceContext::negation() {
- return getRuleContexts();
-}
-
-css3Parser::NegationContext* css3Parser::SimpleSelectorSequenceContext::negation(size_t i) {
- return getRuleContext(i);
-}
-
-
-size_t css3Parser::SimpleSelectorSequenceContext::getRuleIndex() const {
- return css3Parser::RuleSimpleSelectorSequence;
-}
-
-void css3Parser::SimpleSelectorSequenceContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterSimpleSelectorSequence(this);
-}
-
-void css3Parser::SimpleSelectorSequenceContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitSimpleSelectorSequence(this);
-}
-
-
-std::any css3Parser::SimpleSelectorSequenceContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitSimpleSelectorSequence(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::SimpleSelectorSequenceContext* css3Parser::simpleSelectorSequence() {
- SimpleSelectorSequenceContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 32, css3Parser::RuleSimpleSelectorSequence);
- size_t _la = 0;
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- setState(450);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::Multiply:
- case css3Parser::Pipe:
- case css3Parser::MediaOnly:
- case css3Parser::Not:
- case css3Parser::And:
- case css3Parser::Or:
- case css3Parser::From:
- case css3Parser::To:
- case css3Parser::Ident: {
- enterOuterAlt(_localctx, 1);
- setState(429);
- _errHandler->sync(this);
- switch (getInterpreter()->adaptivePredict(_input, 33, _ctx)) {
- case 1: {
- setState(427);
- typeSelector();
- break;
- }
-
- case 2: {
- setState(428);
- universal();
- break;
- }
-
- default:
- break;
- }
- setState(438);
- _errHandler->sync(this);
- _la = _input->LA(1);
- while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 4398050706946) != 0)) {
- setState(436);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::Hash: {
- setState(431);
- match(css3Parser::Hash);
- break;
- }
-
- case css3Parser::Dot: {
- setState(432);
- className();
- break;
- }
-
- case css3Parser::OpenBracket: {
- setState(433);
- attrib();
- break;
- }
-
- case css3Parser::Colon: {
- setState(434);
- pseudo();
- break;
- }
-
- case css3Parser::PseudoNot: {
- setState(435);
- negation();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(440);
- _errHandler->sync(this);
- _la = _input->LA(1);
- }
- break;
- }
-
- case css3Parser::OpenBracket:
- case css3Parser::Colon:
- case css3Parser::Dot:
- case css3Parser::Hash:
- case css3Parser::PseudoNot: {
- enterOuterAlt(_localctx, 2);
- setState(446);
- _errHandler->sync(this);
- _la = _input->LA(1);
- do {
- setState(446);
- _errHandler->sync(this);
- switch (_input->LA(1)) {
- case css3Parser::Hash: {
- setState(441);
- match(css3Parser::Hash);
- break;
- }
-
- case css3Parser::Dot: {
- setState(442);
- className();
- break;
- }
-
- case css3Parser::OpenBracket: {
- setState(443);
- attrib();
- break;
- }
-
- case css3Parser::Colon: {
- setState(444);
- pseudo();
- break;
- }
-
- case css3Parser::PseudoNot: {
- setState(445);
- negation();
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
- setState(448);
- _errHandler->sync(this);
- _la = _input->LA(1);
- } while ((((_la & ~ 0x3fULL) == 0) &&
- ((1ULL << _la) & 4398050706946) != 0));
- break;
- }
-
- default:
- throw NoViableAltException(this);
- }
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- TypeSelectorContext ------------------------------------------------------------------
-
-css3Parser::TypeSelectorContext::TypeSelectorContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-css3Parser::ElementNameContext* css3Parser::TypeSelectorContext::elementName() {
- return getRuleContext(0);
-}
-
-css3Parser::TypeNamespacePrefixContext* css3Parser::TypeSelectorContext::typeNamespacePrefix() {
- return getRuleContext(0);
-}
-
-
-size_t css3Parser::TypeSelectorContext::getRuleIndex() const {
- return css3Parser::RuleTypeSelector;
-}
-
-void css3Parser::TypeSelectorContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->enterTypeSelector(this);
-}
-
-void css3Parser::TypeSelectorContext::exitRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast(listener);
- if (parserListener != nullptr)
- parserListener->exitTypeSelector(this);
-}
-
-
-std::any css3Parser::TypeSelectorContext::accept(tree::ParseTreeVisitor *visitor) {
- if (auto parserVisitor = dynamic_cast(visitor))
- return parserVisitor->visitTypeSelector(this);
- else
- return visitor->visitChildren(this);
-}
-
-css3Parser::TypeSelectorContext* css3Parser::typeSelector() {
- TypeSelectorContext *_localctx = _tracker.createInstance(_ctx, getState());
- enterRule(_localctx, 34, css3Parser::RuleTypeSelector);
-
-#if __cplusplus > 201703L
- auto onExit = finally([=, this] {
-#else
- auto onExit = finally([=] {
-#endif
- exitRule();
- });
- try {
- enterOuterAlt(_localctx, 1);
- setState(453);
- _errHandler->sync(this);
-
- switch (getInterpreter()->adaptivePredict(_input, 39, _ctx)) {
- case 1: {
- setState(452);
- typeNamespacePrefix();
- break;
- }
-
- default:
- break;
- }
- setState(455);
- elementName();
-
- }
- catch (RecognitionException &e) {
- _errHandler->reportError(this, e);
- _localctx->exception = std::current_exception();
- _errHandler->recover(this, _localctx->exception);
- }
-
- return _localctx;
-}
-
-//----------------- TypeNamespacePrefixContext ------------------------------------------------------------------
-
-css3Parser::TypeNamespacePrefixContext::TypeNamespacePrefixContext(ParserRuleContext *parent, size_t invokingState)
- : ParserRuleContext(parent, invokingState) {
-}
-
-tree::TerminalNode* css3Parser::TypeNamespacePrefixContext::Pipe() {
- return getToken(css3Parser::Pipe, 0);
-}
-
-css3Parser::IdentContext* css3Parser::TypeNamespacePrefixContext::ident() {
- return getRuleContext(0);
-}
-
-tree::TerminalNode* css3Parser::TypeNamespacePrefixContext::Multiply() {
- return getToken(css3Parser::Multiply, 0);
-}
-
-
-size_t css3Parser::TypeNamespacePrefixContext::getRuleIndex() const {
- return css3Parser::RuleTypeNamespacePrefix;
-}
-
-void css3Parser::TypeNamespacePrefixContext::enterRule(tree::ParseTreeListener *listener) {
- auto parserListener = dynamic_cast